1. ホーム
  2. ios

[解決済み] iOS 7 の Silent Push Notification が動作しない。

2023-05-14 22:19:54

質問

WWDC 2013 のプレゼンテーションの中で、「マルチタスクの新機能」(") というセクションがあり、サイレント プッシュ通知について説明されています。 これは簡単なことのように思えます。 プレゼンテーションによると、content-available を 1 に設定しただけの APS ペイロードを送信すると、ユーザーには通知が行われないとのことです。

// A. This doesn't work
{ 
  aps: { 
          content-available: 1 
       }
}

私のテストでは、プッシュが受信されないため、これは機能しません。 しかし、sound 属性を含み、alert 属性を除外すると、動作します (ただし、無音ではなくなっています)。

// B. This works
{ 
  aps: {
          content-available: 1,
          sound: "default"
       }
}

しかし、sound属性を変更して無音音声を流すようにすると、無音で押す真似ができるようになります。

// C. This works too.
{ 
  aps: {
          content-available: 1,
          sound: "silence.wav"
       }
}

誰か知っていますか。

  1. これはバグですか?
  2. また、BまたはCがリモート通知として扱われている(サウンド属性が必要なSilent Pushのバグではない)と考えるのが正しいのでしょうか?もしそうなら、Silent Pushのようにレート制限されていないことになります...これはAppleが修正する可能性が高いです。 というわけで、おそらく当てにしないほうがいいと思います。
  3. レート制限とは何ですか (N 個のプッシュを X 秒ごとに、など)?

事前にありがとうございます。

より詳細な情報で編集する

Aの場合、アプリケーションの状態は関係ありません。 通知が届くことはありません。

BとCは、以下のように属性と値を引用符で囲んだ場合のみ動作するようです。

{"aps":{"content-available": 1, "sound":"silent.wav"}}

そして、通知が届くのは application:didReceiveRemoteNotification:fetchCompletionHandler に到着します。 は状態に関係なく

どのように解決するのですか?

これも動作し、到着時に音は鳴りません。

{
    aps = {
        "content-available" : 1,
        sound : ""
    };
}

EDIT

この問題を抱えている人は、以下をチェックするとよいでしょう。 このリンク . 私は Apple の開発者フォーラムで、すべてのアプリの状態と、サイレント プッシュを受信したときと受信しないときについて説明するスレッドに参加しています。