2011-11-30 25 views
10

通知タイプの指示を試してみるための調査を行っています。私はリフレッシュする新しいデータがあるが、ポップアップ/通知メッセージでユーザーを気にしないということをアプリに通知することができます。アイデアは、アプリが開いていても閉じていても同じ通知が出て、この「特別な」メッセージが届いてアプリが開いているときにデータを取得することがわかっているということです。iOSプッシュ通知(空のAPS辞書)

私の考えは、apple documentの下に例5のような空のAP辞書を送ることでした。

私の質問は、このタイプのメッセージを受信したときにどうなりますか?バッジをクリアしますが、何らかのデフォルトメッセージがユーザーに表示されますか?それともこれは完全に沈黙するのだろうか?

これは、アプリが実行されていることを確認して、「特別な」ペイロードを送信するようにサーバーに指示する以外にも、これを行うための良い方法です(プッシュですべてを処理したいと思います)。

答えて

9

バッジやアラートがなく、辞書に指定されているサウンドがない(「aps」キーの場合)、デフォルトのメッセージは表示されず、完全にサイレントになります。

参照したドキュメントの例5をもう一度見てください。 apsは空でもかまいません。また、 "acme2"キーのようにカスタムデータを指定することもできます。 「acme2」データは、サーバーの「特別な」ペイロードがJSONペイロード内に存在する場所の例です。

アプリが動作していることをサーバーに伝える必要はありません。あなたのアプリが動作しているかどうかにかかわらず、サーバーはAPNSを介して特別なペイロードを送信することができます。その場合、特別なペイロードは2つの方法のいずれかで受信されます(プッシュがデバイスに到達すると仮定します...

  1. アプリケーションがフォアグラウンドにある場合、iOSは通知をインターセプトしません。あなたは、あなたのアプリケーションデリゲートのアプリケーション:didReceiveRemoteNotification:メソッドで通知を受け取ります(あなたのアプリケーションデリゲートがメソッドをオーバーライドする場合)。
  2. iOSがプッシュを傍受した場合、通知に応じてアプリケーションを起動するときは、アプリケーションデリゲートのアプリケーション:didFinishLaunchingWithOptions:メソッドで「プッシュ辞書」を取得する必要があります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [self application:application didReceiveRemoteNotification:[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]]; 
}