5

通知を受信するためにAPNSサービスに登録するiOS5.1アプリケーションがあります。登録は成功し、通知を正しく受け取ります。通知を処理しようとすると問題が発生します。

アプリケーションが実行didReceiveRemoteNotificationされると、AppDelegateのメソッドが正しく呼び出されるため、通知は意図したとおりに処理されます。ただし、これは、アプリケーションがフォアグラウンドで実行されている場合にのみ発生します。

ただし、アプリケーションがバックグラウンドで実行されている場合、または単に停止されている場合、そのメソッドは呼び出されません。ディクショナリdidFinishLaunchingWithOptionsから通知を取得して処理するには、メソッドメソッドにいくつかの行を追加する必要があることを読みました。userInfoこれは問題なく機能しますが、通知センターで通知をクリックしてアプリケーションを開いた場合に限ります。つまり、バッジをクリックしてアプリケーションを開くか、バックグラウンドで実行している場合はコンテキストを変更するだけで、アプリは通知が届いたことを認識しません。さらに、複数の通知を受信した場合は、次のことができます。通知センターをクリックして一度に処理するのは1つだけですが、これは面倒です:-)

通知センターで保留中の通知を読み取る方法はありますか?メソッドを使用してそれらをフラッシュする方法があることは知っていますが、それらをcancelAllLocalNotifications読み取る方法は見つかりませんでした。そして、私は本当にそれらすべてを処理する必要があります。アプリケーションがフォアグラウンドになったときに情報を再度取得するために、サードパーティの通知サーバーとの通信プロトコルを実装することを考えましたが、情報はすでにオペレーティングシステムにあるため、何らかの方法でアクセスできない場合は奇妙に感じます。

それで、誰かがそれをする方法を知っていますか?前もって感謝します。

4

2 に答える 2

3

プッシュ通知が到着し、ユーザーが[キャンセル]をクリックすると、アプリはそのプッシュ通知を再度読み取る方法がありません。このデバイスに送信された通知のリストを取得するには、別の機能(おそらくサーバー側)を実装する必要があります。

たとえば、チャット機能がアプリで提供されており、プッシュ通知を介してチャットメッセージを送信する場合は、サーバー上にチャットメッセージも保持する必要があります。ユーザーがプッシュ通知で[キャンセル]をクリックすると、そのチャットメッセージはiOSデバイスに表示されません。その場合、後でアプリがフォアグラウンドになったら、サーバーに電話をかけ、過去のすべてのチャットメッセージを取得します(プッシュ通知を介して送信されます)。

于 2012-09-05T09:37:16.050 に答える
1

わかりました。考えられる解決策は、「読み取り」フラグとmessageIDフィールドを含むメッセージを含む別のデータベーステーブルを作成することです。デフォルトで読み取りフラグがNOの場合、アプリがこれを正常に読み取って表示すると、フラグがYESに更新されますか?

また、256バイトしか使用できない場合、どのようなIDフィールド長が必要になるでしょうか。

編集、

この計画を実行し、正常に機能しました。

于 2015-04-21T09:41:17.360 に答える