FCM(Firebase Cloud Messaging) 接入问题说明

FCM(Firebase Cloud Messaging) 接入问题说明

1. 接入 SDK

Android Studio 有 Firebase 插件,按步骤走没啥问题,和官方文档上的说明是一致的,自动添加sdk,手动下载 google-services.json 文件放入项目即可。

这里写图片描述

这里写图片描述

唯一需要注意的就是apply plugin: 'com.google.gms.google-services'引入插件这句要放到 build.gradle 的最后,自动生成的话也是放在文件最后的,手贱为了好看给抠到文件头了,折腾半天。

这里写图片描述

2. 模拟器代理

模拟器默认是使用 Android Studio 配置的代理,如果翻不动的话可以调整一下。

这里写图片描述

不靠谱,有时候识别不了,直接在模拟器内翻了。

3. 查看 google service 状态

*#*#426#*#* 可以查看 google service 相关状况。

等半天没收到 token 回调的时候可以重连一下 google service 试试

4. 通知和消息的区别

通知和消息的区别从数据角度来说,通知比消息多了 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 方式

5. 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"
        }
}

6. 为什么fcm不需要初始化?

不是不需要初始化,而是不需要我们初始化。使用了 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/

官方相关问答

我是否需要使用其它 Firebase 服务才能使用 FCM?

您可以像 GCM 一样将 Firebase 云消息传递作为独立组件使用,而不使用其它 Firebase 服务。

我现在是 Google 云消息传递 (GCM) 开发者。我是否要转移到 Firebase 云消息传递?

FCM 是 Firebase 品牌下的新版 GCM。它继承了 GCM 的核心基础架构,并带有新的 SDK,简化了云消息传递的开发工作。

升级至 FCM SDK 的好处包括:

客户端开发更简单。您无需再编写自己的注册或订阅重试逻辑。
开箱即用的通知解决方案。您可以使用通知编辑器(具有 Web 控制台的无服务器通知解决方案),让任何人都可以根据 Google Analytics for Firebase 中的数据洞见发送通知以定向特定受众群体。

云消息传递:我已在我的 Android 应用中实现了 onMessageReceived,但系统未调用它。

当应用位于后台时,通知消息显示在系统任务栏中,且不会调用 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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值