【发布时间】:2018-12-08 09:20:01
【问题描述】:
我正在使用 FCM 进行通知。由于某些问题,我在使用 FCM 云控制台发送时没有收到通知。
<service android:name=".MyInstanceIDService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".MyMessagingService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
这是我的两门课。
public class MyInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "MyInstanceIDService";
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
System.out.println("Refreshed token: " + refreshedToken);
// Util.getInstance().saveDeviceID(UniversalImageLoaderConfigurationApplication.getContext(), refreshedToken);
// sendRegistrationToServer(refreshedToken);
}
}
public class MyMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyMessagingService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
//Displaying data in log
//It is optional
// if(LOG)
Log.d(TAG, "From: " + remoteMessage.getFrom());
// Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
Map<String, String> data = remoteMessage.getData();
int id = Integer.parseInt(data.get("id"));
if (id == (Constants.NOTI_NOTIFCATION)) {
String title = data.get("title");
String body = data.get("body");
sendNotification(id, title, body, "");
} else {
sendNotification(1, "", "", "");
}
}
}
我注意到 public void onTokenRefresh() 从未调用过。所以我用了它
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
在我的 MainActivity 中,我得到了 tokenID。可能 FirebaseInstanceIdService 和 FirebaseMessagingService 没有运行。下面是我的毕业典礼
implementation 'com.google.firebase:firebase-messaging:17.0.0'
implementation 'com.google.firebase:firebase-core:16.0.1'
我也用过
apply plugin: 'com.google.gms.google-services'
这是我的根级 gradle
buildscript {
repositories {
// google()
maven { url "https://maven.google.com" }
jcenter()
// mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:4.0.1' // google-services plugin
}
}
allprojects {
repositories {
// google()
mavenLocal()
maven { url "https://maven.google.com" }
jcenter()
mavenCentral()
google()
}
}
【问题讨论】:
-
onTokenRefresh() 仅在首次安装或重新安装应用时调用一次。卸载应用程序并在 onTokenRefresh() 中输入日志并再次安装并检查 logcat。
-
@JineshMalavia 是的。但它从未调用过。 FirebaseInstanceIdService 和 FirebaseMessagingService 出现问题。我认为服务没有运行。我们可以跟踪它正在运行吗?
-
正如你提到的,你没有收到通知服务没有运行。
标签: android firebase firebase-cloud-messaging