应用关闭时无法收到通知

时间:2016-04-12 10:47:54

标签: android service push-notification google-cloud-messaging

我一直在我的一个应用程序中实现推送通知,它正常工作,直到应用程序打开或在后台运行。

但是从后台删除应用程序后,我无法在设备上收到通知。我几乎经历了与此问题相关的所有链接,并且很可能实现了接收通知所需的所有内容。

我只是坚持这一点,所以如果有人知道如何在应用关闭时收到通知,请发布解决方案。

我们非常感谢您的帮助。

服务类代码:

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>

感谢。

1 个答案:

答案 0 :(得分:1)

可能是问题在于没有正确注册deviceID。 Ondestroy()可能正在调用。因此,从后台删除应用程序时也会删除deviceID。所以需要再次注册deviceID。