我已经完全按照谷歌教程中提到的那样创建并设置了Firebase控制台。我也在我的项目中实现了服务。当我从Firebase控制台发送消息时,它在我的应用程序中没有接收到。当我尝试使用单个设备发送时,它会显示“未注册的注册令牌”。
这是我的MyFirebaseInstanceIDService:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
//Getting registration token
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
System.out.println("TOKEN::" + refreshedToken);
//Displaying token on logcat
SmartApplication.REF_SMART_APPLICATION.writeSharedPreferences("regId", refreshedToken);
// SharedPreferences pref = getApplicationContext().getSharedPreferences(Config.SHARED_PREF, 0);
// SharedPreferences.Editor editor = pref.edit();
// editor.putString("regId", refreshedToken);
// editor.commit();
}
}这是我的MyFirebaseMessagingService:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
private static int count = 0;
String TYPE = "type";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
//Displaying data in log
//It is optional
System.out.println("data getting");
Log.d(TAG, "Notification Message TITLE: " + remoteMessage.getNotification().getTitle());
Log.d(TAG, "Notification Message BODY: " + remoteMessage.getNotification().getBody());
Log.d(TAG, "Notification Message DATA: " + remoteMessage.getData().toString());
//Calling method to generate notification
//remoteMessage.getNotification().getBody()
sendNotification(remoteMessage.getNotification().getTitle(),
remoteMessage.getNotification().getBody(), remoteMessage.getData());
}
//This method is only generating push notification
//It is same as we did in earlier posts
private void sendNotification(String messageTitle, String messageBody, Map<String, String> row) {
PendingIntent contentIntent = null;
try {
Intent groupDetailIntent = new Intent(this, UnanimousHomeActivity.class);
contentIntent = PendingIntent.getActivity(this, (int) (Math.random() * 100),
groupDetailIntent, PendingIntent.FLAG_UPDATE_CURRENT);
} catch (Exception e) {
e.printStackTrace();
}
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(messageTitle)
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(contentIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(count, notificationBuilder.build());
count++;
}
}我已经堵了4天了,这里没有发现逻辑问题,所以请有人帮我,在集成推送过程中发生了一些不寻常的事情。
发布于 2017-09-01 20:24:30
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.e(TAG, "From: " + remoteMessage.getFrom());
// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.e(TAG, "Message data: " + remoteMessage.getData().toString());
}
if (remoteMessage.getNotification() != null) {
Log.e(TAG, "Message data: " + remoteMessage.getData().toString());
sendnotification(remoteMessage.getNotification().getBody());
}
}
private void sendnotification(String body) {
Intent intent = new Intent(this,MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
Uri notificationsound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Emoji Keyboard")
.setDefaults(-1)
.setContentText(body)
.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 })
.setSound(notificationsound)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,notificationBuilder.build());
}
}在清单中,在这之后添加这个:
<!-- Firebase Notifications -->
<service android:name=".services.MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service android:name=".services.MyFirebaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<!-- ./Firebase Notifications -->发布于 2017-09-02 19:47:49
成功获取令牌后,请确保已将其正确发送到服务器。
尝试使用recommended action查找无效的注册令牌:
检查您传递给服务器的注册令牌的格式。确保它与客户端应用程序从向Firebase通知注册时收到的注册令牌匹配。请勿截断或添加额外的字符。
有关详细信息,请参阅此documentation。
发布于 2017-09-06 20:20:14
代码在我的应用程序中运行良好
在从firebase创建的app文件夹中添加googleservices-json文件,并在清单中添加服务
<service
android:name=".MyFirebaseMessagingService">
<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>https://stackoverflow.com/questions/45998975
复制相似问题