应用程序关闭时的Android推送通知
我遵循google的文档来实现推送通知。 当应用程序打开时工作正常,但当我关闭时,应用程序不会收到通知 代码如下: 显示 MyGcmListenerService.java应用程序关闭时的Android推送通知,android,google-cloud-messaging,Android,Google Cloud Messaging,我遵循google的文档来实现推送通知。 当应用程序打开时工作正常,但当我关闭时,应用程序不会收到通知 代码如下: 显示 MyGcmListenerService.java public class RegistrationIntentService extends IntentService { private static final String TAG = "RegIntentService"; public RegistrationIntentService() {
public class RegistrationIntentService extends IntentService {
private static final String TAG = "RegIntentService";
public RegistrationIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
try {
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.notifiche_push_sender_id), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Log.i(TAG, "GCM Registration Token: " + token);
sendRegistrationToServer(token);
} catch (Exception e) {
Log.d(TAG, "Failed to complete token refresh", e);
}
}
private void sendRegistrationToServer(String token) {
OperazioneInvioToken op = new OperazioneInvioToken(token);
WebServiceTask ws = new WebServiceTask(op, this, false);
ws.execute();
}
}
public class MyGcmListenerService extends GcmListenerService {
private static final String TAG = "MyGcmListenerService";
@Override
public void onMessageReceived(String from, Bundle data) {
Bundle notification = data.getBundle("notification");
String title = "";
String message = "";
if(notification!=null){
title = notification.getString("title");
message = notification.getString("body");
}
NotificationUtility.showNotification(title, message);
NotificationUtility.setBadge(1);
}
}
public class MyInstanceIDListenerService extends InstanceIDListenerService {
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. This call is initiated by the
* InstanceID provider.
*/
@Override
public void onTokenRefresh() {
// Fetch updated Instance ID token and notify our app's server of any changes (if applicable).
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
}
MyInstanceIDListenerService.java
public class RegistrationIntentService extends IntentService {
private static final String TAG = "RegIntentService";
public RegistrationIntentService() {
super(TAG);
}
@Override
protected void onHandleIntent(Intent intent) {
try {
InstanceID instanceID = InstanceID.getInstance(this);
String token = instanceID.getToken(getString(R.string.notifiche_push_sender_id), GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
Log.i(TAG, "GCM Registration Token: " + token);
sendRegistrationToServer(token);
} catch (Exception e) {
Log.d(TAG, "Failed to complete token refresh", e);
}
}
private void sendRegistrationToServer(String token) {
OperazioneInvioToken op = new OperazioneInvioToken(token);
WebServiceTask ws = new WebServiceTask(op, this, false);
ws.execute();
}
}
public class MyGcmListenerService extends GcmListenerService {
private static final String TAG = "MyGcmListenerService";
@Override
public void onMessageReceived(String from, Bundle data) {
Bundle notification = data.getBundle("notification");
String title = "";
String message = "";
if(notification!=null){
title = notification.getString("title");
message = notification.getString("body");
}
NotificationUtility.showNotification(title, message);
NotificationUtility.setBadge(1);
}
}
public class MyInstanceIDListenerService extends InstanceIDListenerService {
/**
* Called if InstanceID token is updated. This may occur if the security of
* the previous token had been compromised. This call is initiated by the
* InstanceID provider.
*/
@Override
public void onTokenRefresh() {
// Fetch updated Instance ID token and notify our app's server of any changes (if applicable).
Intent intent = new Intent(this, RegistrationIntentService.class);
startService(intent);
}
}
GcmBroadcastReceiver.java
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Explicitly specify that GcmIntentService will handle the intent.
ComponentName comp = new ComponentName(context.getPackageName(), MyGcmListenerService.class.getName());
// Start the service, keeping the device awake while it is launching.
startWakefulService(context, (intent.setComponent(comp)));
setResultCode(Activity.RESULT_OK);
}
}
当应用程序在MessageReceived上打开时,会调用GcmListenerService类,但当应用程序关闭时不会调用
我做错了什么?
谢谢我决定将播放服务从com.google.android.gms:play services:8.3.0更新到com.google.android.gms:play services:8.4.0