我一直在我的一个应用程序中实现推送通知,它正常工作,直到应用程序打开或在后台运行。
但是从后台删除应用程序后,我无法在设备上收到通知。我几乎经历了与此问题相关的所有链接,并且很可能实现了接收通知所需的所有内容。
我只是坚持这一点,所以如果有人知道如何在应用关闭时收到通知,请发布解决方案。
我们非常感谢您的帮助。
服务类代码:
public void onMessageReceived(String from, Bundle data){
String message = data.getString("message");
//createNotification(mTitle, push_msg);
Log.e("*Notification-Response*" , from);
Log.e("*Notification-Bundle*" , String.valueOf(data));
//checkApp();
generateNotification(getApplicationContext(),message);
}
private static void generateNotification(Context context, String message) {
NotificationManager notificationManager = (NotificationManager)
context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(context, Dashboard.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pIntent = PendingIntent.getActivity(context, (int) System.currentTimeMillis(), notificationIntent, 0);
Notification notification = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.appicon)
.setContentTitle("Title")
.setContentText(message)
.setContentIntent(pIntent)
.setAutoCancel(true)
.build();
notification.flags |= Notification.FLAG_AUTO_CANCEL;
// Play default notification sound
notification.defaults |= Notification.DEFAULT_SOUND;
// Vibrate if vibrate is enabled
notification.defaults |= Notification.DEFAULT_VIBRATE;
notificationManager.notify(999999, notification);
}
清单:
<service
android:name=".GCM.PushNotificationService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.google.android.gcm.demo" />
</intent-filter>
</receiver>
感谢。
答案 0 :(得分:1)
可能是问题在于没有正确注册deviceID。 Ondestroy()可能正在调用。因此,从后台删除应用程序时也会删除deviceID。所以需要再次注册deviceID。