GCM を使用するアプリケーションの 1 つで、アプリが強制終了されたときにアプリが通知の受信を停止するという報告を受けています。アプリを再起動すると、通常どおり通知が表示されます。
調査の結果、これは Android 3.1 の次の変更によるものであることがわかりました。
システムは FLAG_EXCLUDE_STOPPED_PACKAGES をすべてのブロードキャスト インテントに追加することに注意してください。これは、バックグラウンド サービスからのブロードキャストによって、停止したアプリケーションのコンポーネントが不注意または不必要に起動されるのを防ぐためです。バックグラウンド サービスまたはアプリケーションは、FLAG_INCLUDE_STOPPED_PACKAGES フラグを追加して、停止したアプリケーションのアクティブ化を許可するインテントをブロードキャストすることで、この動作をオーバーライドできます。( Android 3.1 の変更点)
通知が受信されたときに GCM によって起動されるインテントを調べたところ、FLAG_EXCLUDE_STOPPED_PACKAGES が実際に設定されていることがわかりました。
つまり、Android 3.1 以降でアプリを実行しているすべてのユーザーは、アプリを強制終了すると、自分で再起動するまで通知の受信を停止します。(Android 3.1 より前のバージョンでは問題なく動作します)。
インテントは GCM フレームワーク自体によって起動されるため、それに設定されているフラグを変更することはできず、別の回避策を探しています。
すべてのアイデアを歓迎します。