资源在:https://download.csdn.net/download/qq_38998213/10478112。这里面包括项目 和测试工具,想要的私聊我就行,下载还得1积分,设的最低,感觉应该不设这个东西。
1.首先你的有firebase账号,进行登录,一般用gmail邮箱进行注册。网址如下:https://console.firebase.google.com/
2.添加你的应用到Firebase,需要你的包名等,如下图:
最后你会得到一个google-services.json文件,复制到app目录中。
3.在android studio中 与firebase进行连接,点击Android studio 的Tools,Firebase,会打开一个Firebase窗口:点Clude Messageing 目录心爱的set up如下图:
按照步骤123:,进行操作,如下图:
在连接时需要你写两个服务,在Firebase发出消息时你能接到消息,类我已经写好了,直接就能用:
首先你导包:
compile 'com.google.firebase:firebase-config:11.0.4' // firebase 核心库 compile 'com.google.firebase:firebase-core:11.0.4' compile 'com.google.firebase:firebase-messaging:11.0.4'
两个服务如下:
public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { private static final String TAG = "MyFirebaseIIDService"; @Override public void onCreate() { super.onCreate(); FirebaseMessaging.getInstance().subscribeToTopic("CallBlackTimingDialog"); FirebaseMessaging.getInstance().subscribeToTopic("CallBlackTimingDialog_2"); } @Override public void onTokenRefresh() { String refreshedToken = FirebaseInstanceId.getInstance().getToken(); Log.e("AAA", "Refreshedtoken:" + refreshedToken); sendRegistrationToServer(refreshedToken); } private void sendRegistrationToServer(String token) { // TODO: Implement this method to send token to your app server. Firebase.getInstance(this).logEvent("user_id", token); } }
其中:
FirebaseMessaging.getInstance().subscribeToTopic("CallBlackTimingDialog");
这是关键字,作为识别你的应用的地方,在发云消息的命令中会用到这个关键字。
public class MyFirebaseMessagingService extends FirebaseMessagingService { @Override public void onCreate() { super.onCreate(); } @Override public void onMessageReceived(RemoteMessage remoteMessage) { System.out.println("MyFirebaseMessagingService.onMessageReceived------->"+remoteMessage.getFrom()); // 加主题判断 String from = remoteMessage.getFrom(); // 弹出弹窗 if (from != null && !from.equals("")) { if (from.equals("/topics/CallBlackTimingDialog")) { Map data = remoteMessage.getData(); if (data != null) { String title = data.get("notificationTitle"); String message = data.get("notificationMessage"); String content = data.get("notificationContent"); String imageUrl = data.get("notificationUrl"); Intent intent = new Intent(MyFirebaseMessagingService.this, DialThemeDialogActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("notificationUrl", imageUrl); startActivity(intent); Firebase.getInstance(this).logEvent("云弹窗", "接收到云弹窗"); } String Token = FirebaseInstanceId.getInstance().getToken(); Firebase.getInstance(this).logEvent("user_id", Token); } else if (from.equals("/topics/CallBlackTimingDialog_2")) { Map data = remoteMessage.getData(); if (data != null) { String title = data.get("notificationTitle"); String message = data.get("notificationMessage"); String url = data.get("notificationUrl"); Log.e("onMessageReceived",title+"==========="+message+"================"+url); Intent intent = new Intent(MyFirebaseMessagingService.this, PushNewThemeActivity_2.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.putExtra("notificationUrl", url); startActivity(intent); } String Token = FirebaseInstanceId.getInstance().getToken(); Firebase.getInstance(this).logEvent("user_id", Token); } } } }
在上面这个服务中,会根据关键字进行判断,当你的app有多个云弹窗就需要进行判断收到的是哪个弹窗。进行判断后,弹出。
这就是全部的步骤。
下面面进行测试英道的工具PuTTY,这个工具我会进行上传,在这个工具中进行登录,并且输入命令,我对于这个还没有很好的理解,具体的原理不理解,只是会用,以后理解了里面的原理,为会在写下来的,有理解原理的麻烦留言给我讲讲。我的测试命令是:curl --header "Authorization: key=AAAAce1g-zA:APA91bG-viW-83nGsh_Ly5c7kCeH4gek5R_MCIG-LPWL3_xrdzvLfZIFFOqKqgSYEzDANGVux5C0BR2s5SiDz9jY9R2gh6GUYXmztwxpFwwNzaOMa4miKGKdZ0y3NvjgLhJkYwlKEJ_L" --header Content-Type:"application/json" https://fcm.googleapis.com/fcm/send -d "{\"to\":\"/topics/CallBlackTimingDialog\", \"priority\":\"high\", \"data\": {\"notificationTitle\":\"\",\"\":\"n\",\"notificationMessage\":\"\",\"notificationContent\":\"\",\"notificationUrl\":\"\"}}"
其中有个key:key=AAAAce1g-zA:APA91bG-viW-83nGsh_Ly5c7kCeH4gek5R_MCIG-LPWL3_xrdzvLfZIFFOqKqgSYEzDANGVux5C0BR2s5SiDz9jY9R2gh6GUYXmztwxpFwwNzaOMa4miKGKdZ0y3NvjgLhJkYwlKEJ_L, 这个如下图所示,获取的关键地方我都标注了:还有一个关键的地方:/topics/CallBlackTimingDialog\ ,这其中有一个关键字就是你的CallBlackTimingDialog写入server的。
这就是全部的 步骤。
资源在:https://download.csdn.net/download/qq_38998213/10478112。这里面包括项目 和测试工具,想要的私聊我就行,下载还得1积分,设的最低,感觉应该不设这个东西。