Android App工程引入firebase,使用Cloud Messaging
本文目标
app中使用firebase,并实现推送消息到app上,app弹出通知。
前提条件¶
安装最新版本的 Android Studio,或更新为最新版本。
确保您的项目满足以下要求:
- 目标 API 级别为 19 (KitKat) 或更高
- 使用 Android 4.4 或更高版本
- 使用 Jetpack (AndroidX),这需要满足以下版本要求:
- com.android.tools.build:gradle 3.2.1 或更高版本
- compileSdkVersion 28 或更高版本
设置一台实体设备或使用模拟器运行您的应用。
请注意,依赖于 Google Play 服务的 Firebase SDK 要求设备或模拟器上必须安装 Google Play 服务(并且能访问Google)。
Firebase注册¶
使用您的 Google 账号登录 Firebase。
在Google控制台,创建firebase项目,根据引导操作即可。
app¶
启动后,可以得到一个app的token,例如(测试机)
eMJzgmYVQNuN38z0XWe50i:APA91bEzEesoB1M-glauU-uhdcq_LO7sC7qqErU6SvCR-J7q1C4QUv-fDUlnyA1g22EhWPkVvj2pRRDulleoZtrRt7JhiKoV75VfeZaWiwQ2zUautjKfvGnhRHPJ6CbIBJdL6tl0clNE
获取Google的Authentication Bearer¶
Steps to get Authentication Bearer:
电脑浏览器打开 Google OAuth Playground: https://developers.google.com/oauthplayground
In the "Input your own scopes" for FCM use this url: https://www.googleapis.com/auth/firebase.messaging
Tap Authorize API.
Pick correct user for authorisation and allow access.
In the Step 2: Exchange authorization code for tokens tap Exchange authorisation code for tokens. Access token is your Bearer.
使用curl发起推送¶
前提:电脑网络可以访问Google
用上一步获取到的 Authorization
curl -X POST -H "Authorization: Bearer ya29.a0AXooCguV7jwCC_b9VeeOnOESn7ggF0uiPKDaOKWXBxz3gv7VA8ln0IdkgE5re6SQRVL4LJXYGT1NgjpkS7PsdWcmlqZ1RY52oFsVy0sybnrtm3cWjr-uU1kcDfM8x8m12LFbtEj3541BidqVm7N_F_v-JSfxzcO-baYtaCgYKAdMSARISFQHGX2MiyPzJWEAiStRxJcElKu_K7w0171" -H "Content-Type: application/json" -d '{
"message":{
"notification":{
"title":"FCM Message",
"body":"an.rustfisher.com. This is an FCM Message"
},
"token":"eMJzgmYVQNuN38z0XWe50i:APA91bEzEesoB1M-glauU-uhdcq_LO7sC7qqErU6SvCR-J7q1C4QUv-fDUlnyA1g22EhWPkVvj2pRRDulleoZtrRt7JhiKoV75VfeZaWiwQ2zUautjKfvGnhRHPJ6CbIBJdL6tl0clNE"
}}' https://fcm.googleapis.com/v1/projects/anrfdevfirebasedemoforpublic/messages:send
后台推送消息参考 https://firebase.google.com/docs/cloud-messaging/send-message?hl=zh-cn#java
App无法接收推送的问题¶
一些国产手机划掉app后无法接收fcm推送,在应用信息中开启【自启动】后能够正常接收推送。
划掉app后依然能够接收fcm推送,但是在应用程序信息中【强制停止】后无法接收fcm推送,谷歌的回答是:
当您的应用程序被强制停止或终止时,您似乎遇到了问题。 实际上,这是按预期工作的。 Android 框架建议,在没有明确的用户交互的情况下,不应启动已停止(即从设置中终止/强制停止)的应用程序。 FCM 遵循此建议,因此其服务也不会启动。 这也意味着当应用程序处于“已终止”状态时,将不会收到消息(不会调用 FirebaseMessagingService)
参考¶
在 Android 应用中接收消息 https://firebase.google.com/docs/cloud-messaging/android/receive?hl=zh-cn
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~