3

APNS 通知は正常に機能しますが、確認を求めたい奇妙な動作に気付きました。

「didFinishLaunchingWithOptions」または「didReceiveRemoteNotification」中に通知ペイロードを取得しています。「didFinishLaunchingWithOptions」でチェックしています

NSDictionary* userInfo = [launchOptions valueForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"];
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

パラメータを導出するため。「didReceiveRemoteNotification」では、apsInfo は NSDictionary *apsInfo = [userInfo objectForKey:@"aps"]; から派生します。

これは正常に機能しますが、例外が 1 つあります。通知ポップアップを無視して [表示] ではなく [閉じる] をタップし、後でランチパッドからアプリを起動すると、apsInfo がなくなります。これは「設計による」ものですか?通知情報は、「表示」をクリックするか、通知情報ダイアログからアプリを起動した場合にのみ利用できますか?

よろしく

4

3 に答える 3

0

同じ問題。通知が電話に届き、ユーザーがメッセージ ボックスの [表示] ではなく [閉じる] を押しました。アプリのアイコンにバッジが表示されます。素晴らしい。次に、アプリを開き、Apple のドキュメントにあるように、「launchOptions に通知と bla, bla... を入力する場合は、didFinishLaunchingWithOptions を使用ます。

問題は、 didFinishLaunchingWithOptions が起動されたときに launchOptions がまだ空であることです。

ソリューションの多くの組み合わせを試しました: 結果はありません。SDKのバグ?

UPDATE ==================================== Appleのドキュメントでは、didFinishLaunchingWithOptionsに次のように書かれています:「辞書はユーザーがアプリケーション アイコンをタップしてアプリケーションを起動した場合は nil."

したがって、ユーザーが通知メッセージボックスを閉じた後にアプリが起動されたときに通知の本文を取得できるかどうかさえわかりません(アプリアイコンにバッジがあります)。ユーザーが通知メッセージボックスを閉じると、通知本文がスペースで失われますか? UPDATE===================================== さらに調査した結果、答えが見つかりました。はい、配信されなかったデータは失われます。ユーザーがオンラインになるのを待たず、ストレージも、通知配信の情報もありません。APNS は有料サービスであり、Apple は 100% のデータ配信について責任を負いません。

于 2010-01-18T18:16:35.407 に答える
-1

どうやら、これが方法です、そうです。私たちは皆、通知ペイロードを取得するためにサーバーに連絡することになっていると思います(再び)。通知ペイロードは256バイト以下であるため、これはかなり厄介です。そのため、Appleは、後で使用するために通知ペイロードを保持する手段を提供できたはずです。少なくとも、「バッジ」要素で送信された情報を取得できます。これは保存されます。悲しいことに、残りは失われます...

于 2010-01-19T11:29:15.830 に答える
-1

アイデアはありますが、現時点では実装する時間がありません。

  1. プッシュ通知を送信するときは、通知を送信した各ユーザーを Web サーバーのデータベースに記録します。

  2. 次に特定のユーザーがアプリを開いたときに (プッシュ通知から直接、または後でアプリのアイコンをタップして)、サーバーに ping を送信して、プッシュ通知が送信されてからそのユーザーがアプリを開いたかどうかを確認します。

  3. 通知が送信されてから初めてユーザーがアプリを開いた場合、アプリはサーバーから適切なデータを読み取り、必要な状態に移行します。

現時点ではただのアイデアですが、うまくいくと思います。それを実装するのに時間をかける価値があるかどうかにかかっています。

于 2011-05-04T17:59:44.490 に答える