写在文章之前:(本文只涉及到FCM的初始集成,并且只支持通过Firebase控制台发送消息,想到迁移到服务器的话分到下期在说,或者各位同学可以直接去官网,查阅资料Firebase官网)
最近老大给分享了一个网站(传送门:点击打开链接),说让我看看,是不是可以弄点事情,我就懵逼了,啥情况啊,这是又来新任务了么,才刚闲下来准备干点自己的事情,这就又有事做了的节奏么,不过你确定非要皮这一下,说的这么神秘,在看看能弄点事情的么。好吧,没办法,老大发话了,那咱就只能开始撸了,网站打开一看,整个人都不好了,这啥啊,不就是GCM么,不都给集成了,还想再怎么弄点事啊,难道要不搭梯子、没有Google 服务也能推送么,这尼玛的怎么可能,毙了我也不行,我是做不到好不啦。。。然后,在一细看,我靠,什么鬼,google这是要干啥,竟然在2018年4月10日,已弃用GCM了并于2019年4月11日尽快删除这还怎么玩啊,好好的咋就要弃用GCM了呢,唉,真会玩,不过谁让你google说了算呢,默默的替换吧,有备无患啊,不然还想咋滴,还能咋滴。(以下,图为证:)
嘿嘿,吐槽一下,也放松放松完了,下面就开始正文,怎么去移除GCM,替换成FCM。
当然,要替换FCM,那可不得去了解了解FCM是什么吧,这里就不水字数了,又不是写小说呢是吧。直接上传送门https://firebase.google.com/,貌似不用搭梯子也可以访问哦。
好了,当了解的差不多了,就可以正式开始替换外加愉快的撸代码了。
首先,还是老套路,先上文档的传送门,说不定你看了这个文档,就不需要往下继续看了不是。接下来,开始正正文(貌似扯了一大顿废话)
1. 首先,集成FCM的最最前提条件是:
好了,你这厉害了,运行的系统限制在4.0我没话说,你这Google play服务也要限制在11.8.0.这怎么破,你告诉我,我这手机上可不一定有Google play服务这么高大上的东西,更别说版本了都!!! 好了,如果真的这样,同学,恭喜你,放弃吧,这个FCM不适合你,你也不用往下看了,因为完全用不了啊老铁。
如果想继续往下看的,咱就该说说,怎么去查看这个前前提条件之一满不满足了,系统啥的就不说了,免得说我侮辱你的智商,就说说怎么查看Google Play服务的版本:
设置--->应用程序--->Google play 服务。
以上的检查完毕,下来,就要说说这个最高版本的Android Studio,个人觉得,这个不是什么必须的条件,比方说,现在的最高版本是3.0.1,但是本人使用的却是2.2.2,照样可以集成成功,所以证明这个并不是必须的前提条件,只是,在2.2及以上版本,可以自动集成Firebase,不过,我是手动设置的,官方说明如下:
以下是手动添加方式:
要将 Firebase 添加到您的应用,您需要有一个 Firebase 项目以及适用于您的应用的 Firebase 配置文件。
google-services.json
文件。您可以随时重新下载此文件。app/
),请执行此操作。如果希望将 Firebase 库集成至自己的某个项目中,您需要执行几项基本操作来准备 Android Studio 项目。您可能已经在将 Firebase 添加至应用时完成了这些操作。
首先,向您的项目级 build.gradle
文件添加规则,以纳入 google-services 插件和 Google 的 Maven 代码库:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.google.gms:google-services:3.2.0'
}
}
allprojects {
repositories {
jcenter()
maven{
url="https://maven.google.com"
}
}
}
然后,在您的应用级 build.gradle
(通常是 app/build.gradle
)中,在文件的底部添加 Firebase的依赖,以启用 Gradle 插件:
compile 'com.google.firebase:firebase-core:15.0.0'
over。。。。
看到这,有同学或许就暴躁了,你这集成个FCM,真特么能扯,都没有跟FCM有一点点关系好吧,所以,别着急,既然能说,那肯定这些都是必须要有的,我还能忽悠你不成,请看大屏幕:
你老看看,我没有忽悠你的对吧,哈哈。
下面就完全是Could Message的步骤了,本文的核心哈:
1. 在 Android Studio 中,将 FCM 依赖项添加至您的应用级 build.gradle 文件:
compile 'com.google.firebase:firebase-messaging:15.0.0'
2.将以下内容添加至您应用的清单中:
效果如下:(特别说明:手机需要VPN搭梯子)
注意:这个通知需要在应用程序处于后台都是可以接受到推送的,只有在整个进程被杀掉(通过设置-应用程序-强制关闭)时,才不会再接受到推送
3.如果想要在前台也接收到消息的话呢,就需要将一下内容添加到清单中:
MyFirebaseMessagingService实现如下:
package com.hq.fcmdemo;
import android.util.Log;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
/**
* Created by q.he on 2018/4/18.
*/
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
Log.i("ceshi", "onMessageReceived: " + remoteMessage.toString() + "来自:" + remoteMessage.getFrom() + "消息的id:" + remoteMessage.getMessageId() +
"消息的发送时间:" + remoteMessage.getSentTime() + "消息的内容:" + remoteMessage.getData() + "消息发送给:" + remoteMessage.getTo() + "消息的通知" +
remoteMessage.getNotification());
}
@Override
public void onDeletedMessages() {
super.onDeletedMessages();
Log.i("ceshi", "你删除了消息哦");
}
}
Log输出如下:
完毕。
以上就是FCM的初步集成,下面在来说下,然后就可以收工了,哇哈哈哈。
写在结束的话:以上记录是为了把集成方式写下来,以防下次记忆丢失或者不准确,当然,如果能帮助到同时需要这方面的资料的同学,我也将不胜荣幸。