1

我拥有与Firebase示例代码提供的代码相同的代码。当活动处于前景状态或打开状态时,它可以正常工作。但是,当活动关闭或在后台状态下,它不能正常工作。问题就是这样...当活动处于后台时,Firebase通知不起作用

  1. 应用程序图标未显示应用程序。

  2. 默认情况下采取的应用程序名称的通知标题

当应用程序在后台状态或当时通知时再logcat的设备没有打开显示以下信息:

09-16 15:55:56.056 12113-12113/com.testdemofb D/FirebaseApp: com.google.firebase.auth.FirebaseAuth is not linked. Skipping initialization. 
09-16 15:55:56.089 12113-12113/com.testdemofb D/FirebaseApp: com.google.firebase.crash.FirebaseCrash is not linked. Skipping initialization. 
09-16 15:55:56.176 12113-12113/com.testdemofb I/FA: App measurement is starting up, version: 9452 
09-16 15:55:56.177 12113-12113/com.testdemofb I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE 
09-16 15:55:56.286 12113-12113/com.testdemofb I/FirebaseInitProvider: FirebaseApp initialization successful 
09-16 15:55:56.518 12113-12147/com.testdemofb I/FA: Tag Manager is not found and thus will not be used 

如果有任何解决方案,然后帮助我

谢谢...

MyFirebaseMessagingService.java

package com.testdemofb; 

import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Color; 
import android.media.RingtoneManager; 
import android.net.Uri; 
import android.support.v4.app.NotificationCompat; 
import android.util.Log; 
import android.widget.Toast; 

import com.google.firebase.messaging.FirebaseMessagingService; 
import com.google.firebase.messaging.RemoteMessage; 

public class MyFirebaseMessagingService extends FirebaseMessagingService { 

private static final String TAG = "MyFirebaseMsgService"; 


@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

    // Check if message contains a data payload. 
    if (remoteMessage.getData().size() > 0) { 
     Log.d(TAG, "Message data payload: " + remoteMessage.getData()); 
     sendNotification(remoteMessage.getData().get("title")); 
    } 

    // Check if message contains a notification payload. 
    if (remoteMessage.getNotification() != null) { 
     Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); 
     Log.d(TAG, "Message Notification BodyLocalize: " + remoteMessage.getNotification().getBodyLocalizationKey()); 
     Log.d(TAG, "Message Notification Title: " + remoteMessage.getNotification().getTitle()); 
     Log.d(TAG, "Message Notification TitleLocalize: " + remoteMessage.getNotification().getTitleLocalizationKey()); 
     sendNotification(remoteMessage.getNotification().getBody()); 
    } 


} 

private void sendNotification(String messageBody) { 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

    Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher); 
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setLargeIcon(bm) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setContentTitle("Title") 
      .setContentText(messageBody) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

    NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); 

} 
} 

AndroidManifest.xml文件把这样应用之间标签...

<service android:name=".MyFirebaseMessagingService" 
     android:process="remote"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT" /> 
     </intent-filter> 
    </service> 

    <service android:name=".MyFirebaseInstanceIDService" > 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> 
     </intent-filter> 
    </service> 
+0

你能分享你的执行生成notofication –

+0

分享我的代码生成通知@ RaguSwaminathan –

+0

你检查是否调用sendnotification方法吗? ?尝试在那里记录和检查 –

回答

2

有两种类型的FCM使用的消息,即。通知和数据。阅读更多关于它here。我认为你正在发送通知。您需要发送数据信息。

就是这样。从火力地堡控制台

{ 
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...", 
    "data" : { 
"Nick" : "Mario", 
"body" : "great match!", 
"Room" : "PortugalVSDenmark" 
}, 
} 
0

发送通知:同时适用于背景和前景应用

相反onMessageReceived的,覆盖ZZM()FirebaseMessagingService,并从这里创建自定义通知

@Override 
public void zzm(Intent intent) { 
    Log.e(TAG, "zzm : " + intent); 
    createNotification();   
} 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 

} 
+0

zzm方法到底做了什么?它是好的做法重写它? – Vlad

-2

我想FireBase是这样工作的...

enter image description here

+0

https://firebase.google.com/docs/cloud-messaging/android/receive –

相关问题