Android Studio 有 Firebase 插件,按步骤走没啥问题,和官方文档上的说明是一致的,自动添加sdk,手动下载 google-services.json 文件放入项目即可。
唯一需要注意的就是apply plugin: 'com.google.gms.google-services'
引入插件这句要放到 build.gradle 的最后,自动生成的话也是放在文件最后的,手贱为了好看给抠到文件头了,折腾半天。
模拟器默认是使用 Android Studio 配置的代理,如果翻不动的话可以调整一下。
不靠谱,有时候识别不了,直接在模拟器内翻了。
*#*#426#*#* 可以查看 google service 相关状况。
等半天没收到 token 回调的时候可以重连一下 google service 试试
通知和消息的区别从数据角度来说,通知比消息多了 notification 字段,消息只有 data 相关字段。
通知:如果应用在前台、可见的,直接调用 onMessageReceived
; 在后台、未启动等情况,不调用 onMessageReceived
,会在通知栏弹出通知,点击后启动应用入口Launcher,并传递数据。
// MainActivity.onCreate 检查是否有推送数据
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
Object value = getIntent().getExtras().get(key);
Logger.d( "Key: " + key + " Value: " + value);
}
}
消息:不论应用是否启动、前后台,都会直接调用 onMessageReceived
,通知栏没有通知。适用于处理应用内部数据、自行弹出通知等。
控制台只能发送通知可以带数据,不能发送纯数据消息。
要测试消息,可以通过 http 方式
我这里用的 postman
body 中带 notification 即为通知,不带则为消息。
Firebase 云消息传递 HTTP 协议
https://firebase.google.com/docs/cloud-messaging/http-server-ref?hl=zh-cn#-http–json
可查看 http 消息格式
完整 http 为
POST /fcm/send HTTP/1.1
Host: fcm.googleapis.com
Authorization: key=AAAAz_zCCrQ:APA91bFKk2O5eMBeUZnyPW4FiyD2BjjVLusoI1DOl3A8eGTBHBiuNy8SWVt_DiogKH5rq7Ng270dtV5cedYDvhXBjeStGA_bfsm17eWDTrrnM48roKiA3k5PaHSR-WYMnXaQO0emXzFI
Content-Type: application/json
Cache-Control: no-cache
{
"to":"egp2OxL7lm4:APA91bH1QVvL4VHylGM_qLHyWvYFF360xnmNqtWjATB9tf9UCdJEkne5sFlrD25UZFvjpK02tTRIf-dOT5X0unllENrFHY4YOSEldYct6oYNIweWovAwCPOGASvz0XPPWHCj5BSh5Oyj",
"notification" : {
"body" : "great match!"
},
"data":{
"xx":"xx"
}
}
不是不需要初始化,而是不需要我们初始化。使用了 Provider
原文地址: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html Firebase 介绍了他们在 Android 初始化的一些做法
http://tanfujun.com/2017/03/13/%E8%87%AA%E5%8A%A8%E5%88%9D%E5%A7%8B%E5%8C%96%E4%BD%A0%E7%9A%84%E5%BA%93-%E8%AF%91/
您可以像 GCM 一样将 Firebase 云消息传递作为独立组件使用,而不使用其它 Firebase 服务。
FCM 是 Firebase 品牌下的新版 GCM。它继承了 GCM 的核心基础架构,并带有新的 SDK,简化了云消息传递的开发工作。
升级至 FCM SDK 的好处包括:
客户端开发更简单。您无需再编写自己的注册或订阅重试逻辑。
开箱即用的通知解决方案。您可以使用通知编辑器(具有 Web 控制台的无服务器通知解决方案),让任何人都可以根据 Google Analytics for Firebase 中的数据洞见发送通知以定向特定受众群体。
当应用位于后台时,通知消息显示在系统任务栏中,且不会调用 onMessageReceived。对于具有数据负载的通知消息,通知消息显示在系统任务栏中,且可以根据用户点按通知时的意图检索通知消息中包含的数据。
https://firebase.google.com/docs/cloud-messaging/concept-options#notifications_and_data_messages
使用 FCM,您可以向客户端发送两种类型的消息:
通知消息,有时被视为“显示消息”。
数据消息,由客户端应用处理。
通知消息包含一组预定义的用户可见的键。与其相对,数据消息只包含自定义键值对。通知消息可包含一个可选的数据有效负载,该有效负载在用户点按通知时传递。
https://segmentfault.com/a/1190000010977980
http://www.galaxyclub.cn/thread-349402-4-10.html
http://blog.csdn.net/leiricong/article/details/54340353