web-dev-qa-db-ja.com

サイレントプッシュ通知ペイロードを送信する方法

サイレントプッシュで実行するアクションを決定する方法を知りたいだけです。

これは、クライアントに送信したapsです。

"aps": {
    "content-available": 1
}

私の問題は、type: "Order_Update"を追加して、注文の更新がアラート通知を表示するためのサイレントプッシュであることを判断することです。

22
Sydney Loteria

いくつかのオプションがあります!さまざまなペイロードとその使用法をすべて理解するために、少し乗りましょう。


単純なペイロード

通知センターに表示:はい

バックグラウンドタスクを実行するためにアプリを起動します:いいえ

{
    "aps" : {
        "alert" : "You received simple notification!",
        "badge" : 1,
        "sound" : "default"
    }
}

カスタム通知音付きペイロード

通知センターに表示:はい

バックグラウンドタスクを実行するためにアプリを起動します:いいえ

Step 1:アプリバンドルにカスタム通知サウンドファイル(.wavまたは.aiff拡張子のみ。例:notification.wav)を追加します。

Step 2:カスタムサウンドを再生するには、以下に示すようにペイロードを設定します

{
    "aps" : {
        "alert" : "It's a custom notification sound!",
        "badge" : 1,
        "sound" : "notification.wav"
    }
}

カスタムペイロードによる通知

通知センターに表示:はい

バックグラウンドタスクを実行するためにアプリを起動します:いいえ

{
    "aps" : {
        "alert" : "It's a notification with custom payload!",
        "badge" : 1,
        "content-available" : 0         
    },
    "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
    },

}

ここで、data辞書には、必要なカスタム情報が保持されています。また、「カスタムペイロードを使用した通知です!」という警告メッセージとともに通常の通知として表示されます。


通常のサイレント通知

アラートを通知バーとして表示しません。利用可能な新しいデータがあることをアプリに通知するだけで、アプリに新しいコンテンツを取得するよう促します。

通知センターに表示:いいえ

バックグラウンドタスクを実行するアウェイクアプリ:はい

{
    "content-available" : 1
}

カスタムペイロードによるサイレント通知

タスクのバックグラウンドでアプリを目覚めさせるだけでなく、通知アラートを表示する魔法も登場します! (注:バックグラウンドで実行されていて、ユーザーによって明示的に強制終了されていない場合のみ。)追加のパラメーター"content-available" : 1をペイロードに追加するだけです。

通知センターに表示:はい

バックグラウンドタスクを実行するアプリを起動します:はい

{
    "aps" : {
        "alert" : "Notification with custom payload!",
        "badge" : 1,
        "content-available" : 1
    },
     "data" :{
        "title" : "Game Request",
        "body" : "Bob wants to play poker",
        "action-loc-key" : "PLAY"
     }
}

アプリの要件に応じて、これらのペイロードを使用します。 background app refreshについては、 Appleのドキュメント を参照してください。これで必要な情報がすべて得られることを願っています。ハッピーコーディング:)

75

私が理解しているように、ペイロード内に追加のデータが必要なので、プッシュ通知タイプとは何か、または処理が必要なアクションを特定できます。

そのためには、ペイロードを次のように編集します。

 $body = array(
    'content-available' => 1,
    'sound' => ''
    );  

$payload = array();
$payload['aps'] = $body;
$payload['action'] = 'order_update';

次に、iOSコードで:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{


    NSString *action = userInfo["action"];


    if([userInfo[@"aps"][@"content-available"] intValue]== 1 && [action isEqualToString:@"order_update") //order update notification
    {
        //handle Your Action here
        return;
    }


}

これで問題が解決することを願っています!

0
gunjot singh