2017-01-01 11 views
3

gcm notificationを使用しているアプリがあります。彼らは正常に動作しますが、ここに問題があります:もし私がそれらのうちの1つを(2モンティ以上のように)長時間オープンしなければ、もはや通知を受信しません。アプリが長時間開かれていないとGCMプッシュ通知が受信されません

実際、私はstackoverflowアプリケーションでもこの現象を経験しました。 誰がその理由を説明し、それを避ける方法を教えてもらえますか?

答えて

1

通常、gcmの通知は、Googleがブロードキャストを停止した後、4週間の有効期間があります。しかし、あなたのケースでは、アプリは定期的に目を覚まし、開かずとも通知を受け取ろうとするための目覚まし時計を持っています。一部のアプリで通知が紛れ込んでいる場合は、バッテリー節約アプリ(Greenifyなど)がアプリの通知を目立たなくしているかどうかを確認してください。そうでない場合、あなたのROMには、このウェイクアップe.t.cをブロックするバッテリー節約機能があるかもしれません。特定の条件は、WiFi接続やデータのスイッチオンなどのアプリケーションで起床を引き起こす可能性があります。

+0

答えていただきありがとうございます。私はいくつかの携帯電話でテストしましたが、どれもバッテリーを有効にしていませんでした。また、通知の4週間のライフタイムについては、今のところ通知を送信した場合など、一部の非アクティブな時間後にこれらのアプリが通知を受け取らないことを意味します。それはインターネットや他のアプリに通知されているにもかかわらず、未来は通知を受け取るのに問題はありません。このサンプルアプリケーションを一度開くと、その時点から通知が届きます。 「ウェイクタイマー」についていくつかのコードで説明できますか? – Merka

1

hereを継続的にバックグラウンドで実行するサービスを設定することをお勧めします。 IntentServiceは、作業が不足したときに停止することに注意してください。このthreadに従ってまた

、:何かが手動でコンポーネントのいずれかを実行するまで

は、ユーザ設定からあなたのアプリを力は、停止した場合、あなたのコードは、n 今まで、これまで一般的に、再びを実行しますユーザーが手動でアクティビティを起動します(Android 3.1以降)。したがって、ユーザーが設定からアプリを強制停止すると、新しいデバイスやエミュレータではGCMメッセージは受信されません。

@Bmbariahが述べたように、Androidデバイス上のAndroidアプリケーションは、メッセージを受信するために実行する必要はありません。アプリケーションが適切なブロードキャストレシーバとアクセス許可でセットアップされている限り、メッセージは着信時にインテントブロードキャストを介してAndroidアプリケーションを起動します。このWakefulBroadcastReceiverサービスをチェックすると、バックグラウンドタスクのライフサイクルを管理できます。

「ウォークアップ」としか書かれていないのは、アプリが「スリープ中」またはバックグラウンドであることを意味します。しかし、アプリケーションを強制終了すると、起動するプロセスがないので、起動する必要があります。

関連する問題