web-dev-qa-db-ja.com

閉じたWiFiネットワーク(インターネット接続なし)でiOS / Androidにプッシュ通知を送信する

[〜#〜] no [〜#〜] GSM/3Gやあらゆる種類のセル受信があるエリア/会場でユーザーが使用できるアプリを作成したいと思います。また、インターネットアップリンクのないクローズドWiFiネットワークのみを提供しているため、デバイス(PCとスマートフォン)は相互に通信できますが、外界とは通信できません(理由は聞かないでください:)

ユーザーは、会場に来る前にアプリをダウンロードするように指示されます。

私のアプリはプッシュ通知を受信できる必要がありますが、もちろんAppleのAPNSまたはGoogleクラウドメッセージングサービスに到達することはできません。ただし、アプリはIPを使用してLAN上の中央サーバーに登録します。 (ユーザーがWiFiネットワークに接続し、登録済みの電話に属する電話番号を持っている場合にログインします。)

今私の質問は:イベントがトリガーされ、アプリがAppleまたはGoogleのオンライン通知サービスを使用または接続せずにウェイクアップする必要があるときにプッシュ通知を送信する方法はありますか?例えば。サーバーによってトリガーされたイベントに基づいてユーザーの電話に通知を送信するために使用できるオンプレミスのプッシュ通知サービス?
助言がありますか?

更新:明確にするために、これはSIPサーバーに接続する単純なVoiPアプリであり、ユーザーが互いに電話をかけられるようにするため、2つの電話が接続するのはかなりリアルタイムである必要があります。しかし、どうやらあなたはプッシュ通知によってのみアプリを起こすことができるので、インターネットが必要です。

13
user2542225

例えば。サーバーによってトリガーされたイベントに基づいてユーザーの電話に通知を送信するために使用できるオンプレミスのプッシュ通知サービス?

Androidに関しては、答えは「実際にはそうではない」です。オプションは次のとおりです。

  • 「プッシュ」メカニズムをメッセージキューの形式で実装します。この場合、デバイスは頻繁にメッセージを探してポーリングします。

  • WakeLockWifiLockを使用してデバイス(およびWiFi)の電源を常にオンにしてから、プッシュメッセージにMQTTなどを使用します

これらのいずれかはバッテリーに悪影響を及ぼしますが、最初の1つは電力消費の観点からより構成可能です(たとえば、メッセージを1時間に1回だけチェックする場合、それは悪くありません)。

GCMが電力消費を低く抑えることができる理由は、OSおよびチップセット内のモバイルデータ接続用の特別なフックのためです。これにより、プッシュサーバーへのオープンソケット接続を維持しながらCPUの電源を切ることができ、サーバーからの着信パケットがデバイスをウェイクアップします。これはWiFiでは利用できません。

5
CommonsWare

そしてiOSの場合、答えはノーです。 AppleのAPNSサーバーを利用せずにデバイスにプッシュ通知することはできません。唯一のオプションは、WiFi経由でデバイス上で他の方法でトリガーされるローカル通知ですが、これらを受信するにはデバイスをスリープ状態にしないか、継続的なバックグラウンド処理を可能にするためにVOIPサービスまたは別の互換性のあるサービスを追加する必要があります。

ローカル通知iOS

4
Mark McCorkle

あなたはおそらくあなたの特定の問題を解決するか、あきらめてから長い間です。しかし、参考までに、iOSは何年にもわたって進化してきました 現在はサポートしています あなたが説明するVOIP機能の正確なタイプ。

ボイスオーバーインターネットプロトコル(VoIP)アプリを使用すると、ユーザーはデバイスの携帯電話サービスの代わりにインターネット接続を使用して電話をかけることができます。このようなアプリは、着信やその他の関連データを受信できるように、関連するサービスへの永続的なネットワーク接続を維持する必要があります。 VoIPアプリを常に起動状態に保つのではなく、システムはそれらを一時停止することを許可し、それらのソケットを監視するための機能を提供します。着信トラフィックが検出されると、システムはVoIPアプリを起動し、ソケットの制御をアプリに戻します。

1
dtmland