10

アプリケーションが実行されていない場合、GCMIntentService (GCMBaseIntentService を拡張) は通知を受け取りません。

から: http://developer.android.com/about/versions/android-3.1.html

停止したアプリケーションの起動コントロール システムは、すべてのブロードキャスト インテントに FLAG_EXCLUDE_STOPPED_PACKAGES を追加することに注意してください。これは、バックグラウンド サービスからのブロードキャストによって、停止したアプリケーションのコンポーネントが不注意または不必要に起動されるのを防ぐためです。バックグラウンド サービスまたはアプリケーションは、FLAG_INCLUDE_STOPPED_PACKAGES フラグを追加して、停止したアプリケーションのアクティブ化を許可するインテントをブロードキャストすることで、この動作をオーバーライドできます。

この設定を回避する方法はありますか? ありがとう

4

2 に答える 2

22

アプリケーションが実行されていない場合、GCMIntentService (GCMBaseIntentService を拡張) は通知を受け取りません。

はい、そうなります。ただし、質問の残りの部分は、アプリケーションが実行されているかどうかとはほとんど関係がなく、ユーザーが以前に実行したことがあるかどうかとは関係ありません。引用した段落で「停止」という言葉が意味するのは、「実行されていない」ではなく、アプリケーションの状態を表しています。

  • 最初にインストールされたとき、何かがコンポーネントを手動で呼び出す前 (たとえば、ユーザーがアクティビティを起動するとき)

  • ユーザーがアプリを強制停止した後、何かが手動でコンポーネントを呼び出すまで (ユーザーがアクティビティを起動するなど)

(そして、このために「停止」よりも特徴的な形容詞を思いついたことを本当に望んでいます...)

この設定を回避する方法はありますか?

いいえ。ユーザーがアプリを強制停止した場合は、手動で再起動するまで、何らかの理由でアプリを再度実行したくないことを示しています。目的は、ユーザーがアプリを強制停止する理由をなくすことです。「強制停止」(つまり、[設定] から [強制停止] ボタンを押す) という意味であることに注意してください。通常のタスク マネージャー、または Android 4.x の [最近のタスク] リストからのスワイプでは、この効果はありません。

于 2012-07-23T15:04:09.607 に答える
2

この android-gcm スレッドのFrancesco Nerieri によると:

したがって、アプリを強制停止した場合、ICS の意図した動作は、アプリがメッセージを受信しないようにすることです。JB では、これは GCM もアプリを登録解除することを意味します。これは残念な動作であり、これを変更するために取り組んでいます (JB の登録解除部分)。

于 2012-08-27T22:27:00.733 に答える