###前提・実現したいこと
プッシュ通知を受信したことをユーザーに知らせるためのシステムを作っています。
端末がスリープやロック画面などの状態でもプッシュ通知を受信し、
通知エリアへの登録を行いたい。
(端末がホーム画面などでは正常にプッシュ通知を受信でき、通知エリアに通知を表示することもできています)
###発生している問題・エラーメッセージ
端末がスリープやロック画面等になってから1分ほど経過すると
通知を受け取れなくなってしまいます。
MyGcmListenerService.javaのonMessageReceived()メソッドにブレイクポイントを設定してデバッグ実行をした所、
スリープ1分後にはこのメソッドが呼ばれなかった。
それまではプッシュ通知を受信してブレイクポイントで止まった。
ロック解除後、ホーム画面に遷移した際にMyGcmListenerService.javaのonMessageReceived()メソッドが呼ばれていた。
###該当のソースコード
プッシュ通知実装のサンプルを元にAndroidManifestや
GcmListenerなどを編集しています。
AndroidManifest.xml
xml
1<?xml version="1.0" encoding="utf-8"?> 2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="パッケージ名"> 4 5 <uses-permission android:name="android.permission.INTERNET" /> 6 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 7 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 8 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> 9 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 10 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 11 <uses-permission android:name="android.permission.READ_CONTACTS" /> 12 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 13 <uses-permission android:name="com.android.vending.BILLING" /> 14 15 <permission 16 android:name="パッケージ名.permission.C2D_MESSAGE" 17 android:protectionLevel="signature" /> 18 <uses-permission android:name="パッケージ名.permission.C2D_MESSAGE" /> 19 20 <application 21 android:name="パッケージ名.App" 22 android:allowBackup="true" 23 android:icon="@mipmap/ic_launcher" 24 android:label="@string/app_name" 25 android:supportsRtl="true" 26 android:theme="@style/AppTheme" > 27 28 <!--This meta-data tag is required to use Google Play Services.--> 29 <meta-data android:name="com.google.android.gms.version" 30 android:value="@integer/google_play_services_version" /> 31 32 <activity 33 android:name="パッケージ名.MainActivity"> 34 <intent-filter> 35 <action android:name="android.intent.action.MAIN" /> 36 <category android:name="android.intent.category.LAUNCHER" /> 37 </intent-filter> 38 </activity> 39 40 <!-- プッシュ通知 --> 41 <receiver 42 android:name="com.google.android.gms.gcm.GcmReceiver" 43 android:exported="true" 44 android:permission="com.google.android.c2dm.permission.SEND" > 45 <intent-filter> 46 <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 47 <category android:name="パッケージ名" /> 48 <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> 49 </intent-filter> 50 </receiver> 51 <service 52 android:name="パッケージ名.Libs.MyGcmListenerService" 53 android:exported="false" > 54 <intent-filter> 55 <action android:name="com.google.android.c2dm.intent.RECEIVE" /> 56 </intent-filter> 57 </service> 58 <service 59 android:name="パッケージ名.Libs.MyInstanceIDListenerService" 60 android:exported="false"> 61 <intent-filter> 62 <action android:name="com.google.android.gms.iid.InstanceID"/> 63 </intent-filter> 64 </service> 65 66 <service android:name="パッケージ名.Libs.RegistrationIntentService" /> 67 68 </application> 69</manifest>
MyGcmListenerService.java
java
1package パッケージ名.Libs; 2 3/** 4import 略 5 */ 6 7public class MyGcmListenerService extends GcmListenerService { 8 9 @Override 10 public void onMessageReceived(String from, Bundle data) { 11 String message = data.getString("message"); 12 sendNotification(message); 13 } 14 15 private void sendNotification(String message) { 16 // 通知エリアに通知を表示する処理(略) 17 } 18}
###補足情報(言語/FW/ツール等のバージョンなど)
'com.google.android.gms:play-services-gcm:8.4.0'を使用
テスト端末はAndroid4.1.2
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。