我的应用使用发送通知消息的GCM,我的问题是:
当应用程序处于前台时,我的应用程序可以收到通知消息,但当应用程序处于后台或被杀时,我的应用程序无法接收通知消息。
我想自定义通知视图,我不希望gcm发送通知。
答案 0 :(得分:0)
最好切换到Firebase云消息传递(FCM)。它处理应用程序的前景和后台情况。
与GCM相比,其中还必须实现广播接收器以接收消息,在FCM中我们使用扩展FirebaseMessagingService
的服务。您的服务应覆盖onMessageReceived
和onDeletedMessages
回调。
onMessageReceived
,但以下情况除外:
有关详细信息,请参阅FCM Notification for Android
答案 1 :(得分:0)
即使使用已关闭的应用,也可以使用Service
在后台处理您的代码。
public class MyService extends Service {
static Activity activity;
public void SendNotification(String message) {
Intent resultIntent = new Intent(this, YourActivity.class); //Display activity when user click notification
resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), resultIntent, 0);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_lancher)
.setContentTitle("title")
.setContentText(message)
.setSound(alarmSound)
.setContentIntent(pIntent);
NotificationManager mNotificationManager =
(NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());
}
@Override
public void onCreate() {
super.onCreate();
// Start GCM code here
// or
SendNotification("hi!);
}
}
AndroidManifest.xml
中的
<service
android:name=".MyService"
android:exported="false" />
开始Service
Intent serviceIntent = new Intent(YourActivity.this, MyService.class);
startService(serviceIntent);