1

iOSにインスタントメッセージングアプリがあります。プッシュ通知を使用して、アプリが最小化されている間にメッセージを受信したかどうかをユーザーに通知したいと思います。最初は、アプリが最小化されると、アプリがサーバーに通知し、サーバーがAPNSに接続してメッセージを受信したことを通知するようにアプリを実装しましたが、アプリがサーバーに通知するのに遅延があります。したがって、ユーザーがアプリを最小化すると同時にメッセージが送信されている場合、サーバーはAPNSではなくアプリにメッセージを送信しているため、ユーザーは通知を受け取りません。

このシナリオがチャットアプリでどのように克服されるのか疑問に思っています。ユーザーがアプリを最小化したかどうかに関係なく、すべてのチャットメッセージをAPNSに送信していますか。すべてのメッセージをAPNSに送信する場合、それは良い設計になりますか?

4

1 に答える 1

5

iOS では、アプリが「最小化」されている (実際にはバックグラウンドで) 動作しているプロセスに依存することはできません。プロセスはさまざまな理由で OS によって強制終了される可能性があります。いずれにしても、例外的な拡張バックグラウンド処理の資格がない限り、アプリは 10 分以上処理できません。

通常、チャットタイプのアプリの場合、クライアントがメッセージを受信するたびに、同じクライアントがメッセージを返信して、サーバーにそのメッセージを受信したことを知らせます。このようにして、数秒経ってもメッセージが受信されたというシグナルをサーバーが受信しない場合、アプリがデバイス上で実行されていないと想定して、代わりにプッシュ経由でメッセージを送信できます。

クライアントで過剰な処理を行ってバッテリーを消耗させる必要はなく、メッセージごとにプッシュを送信する必要もありません。

于 2013-02-05T13:25:59.733 に答える