2016-12-08 27 views
1

私は、プッシュ通知にFirebase Cloud Messagingを使用しているプロジェクトに取り組んでいます。以下のJSONは、現在バックエンドAPIによって生成され、FCMに送信されている:FCMからの通知がiOS通知トレイに表示されることがあります

{ 
    "priority": "normal", 
    "delay_while_idle": true, 
    "dry_run": false, 
    "time_to_live": 3600, 
    "notification": { 
    "body_loc_key": "MyCustomNotificationId" 
    }, 
    "data": { 
    // contains notification data 
    }, 
    "registration_ids": [ 

    ] 
} 

この通知は、一部のデバイス上でしかし、時には、iOSアプリケーションがフォアグラウンドにあるときにのみ受信する必要がある意味、この沈黙する必要があります通知は、あたかもiOS通知トレイに表示されるパラメータを持っているかのように、アプリがバックグラウンドにある状態でiOS通知トレイに移動します。

私は、body_loc_key属性がiOSデバイスに存在する必要があることを知りました。そうしないと、アプリケーションがフォアグラウンドでもバックグラウンドでも、通知はデバイスにヒットしません。

  • AppleのiPhone 5、
  • AppleのiPhone 6、同様に影響を受け、他の可能性

問題は、次のデバイス上で発生しました。

成功して使用したFCMに送信されたJSONの設定が異なります。アプリケーションがフォアグラウンドにあるときに通知がデバイスに送信されるだけですか?あなたがnotificationペイロードを使用しているため

答えて

0

sime時間のFCMペイロードを使って実際に問題が見つかったのは、実際にはbody_loc_keyという属性です。

サイレントまだAppleデバイスに送信する通知のためには、ペイロードは、以下の基準を満たしている必要があります

  • prioritynormalに設定する必要があり、
  • content_availabletrueに設定する必要があります、
  • notification属性にはデータが含まれている必要がありますが、body_loc_key属性を含める必要があります。この属性には、空の文字列-""を設定する必要があります。

の作業ペイロード例:空の文字列にbody_loc_keyを変更

// Example one 
{ 
    "priority": "normal", 
    "delay_while_idle": true, 
    "dry_run": false, 
    "time_to_live": 3600, 
    "content_available": true, 
    "notification": { 
    "body_loc_key": "" 
    }, 
    "data": { 
    // contains notification data 
    }, 
    "registration_ids": [ 
    ] 
} 

// Example two 
// (note that body_loc_key has been replaced with badge) 
{ 
    "priority": "normal", 
    "delay_while_idle": true, 
    "dry_run": false, 
    "time_to_live": 3600, 
    "content_available": true, 
    "notification": { 
    "badge": 10 
    }, 
    "data": { 
    // contains notification data 
    }, 
    "registration_ids": [ 
    ] 
} 

はかなりの問題を修正しました。その上で、我々はまた、notification属性の後、約otherの属性を発見した:

  • badgeが存在してもよく、処理され、通知は沈黙のまま、
  • title_loc_keyは効果がありません、通知が
  • 、沈黙します
  • body_loc_argsは効果がありません。通知は無音のままです。

この3つの追加はすべて、先行基準が満たされているシナリオに適用されます(存在する場合は空のbody_loc_keyなど)。

+0

回答をdownvoteすることを決定したら、フィードバックをください。他の回答と違って私が持っていた問題の実際の解決策を提供しましたが、ここで何が問題なのか分かりません。 –

-1

あなたの通知がサイレント・メッセージとして表示メッセージないとして送られている理由です。
特に、body_loc_keyを使用しています。

あなたは、サイレントメッセージを送信するためにはbody_loc_keyが必要であることを読んでいると書いてあります。
これは当てはまりません。 これを見つけたページをリンクしていただけますか?

+0

'notification'ペイロードが空のとき、通知はデバイスに届いたことはありません。私たちのテストに基づいて、それは何かを含む必要があります。 –

関連する問題