Android 应用集成Firebase 的Cloud Message(FCM)

写在文章之前:(本文只涉及到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的最最前提条件是:

  • 运行 Android 4.0 (Ice Cream Sandwich) 或更高版本以及 Google Play 服务 11.8.0 或更高版本的设备
  • 最新版本的 Android Studio

好了,你这厉害了,运行的系统限制在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,不过,我是手动设置的,官方说明如下:

Android 应用集成Firebase 的Cloud Message(FCM)_第1张图片

以下是手动添加方式:

要将 Firebase 添加到您的应用,您需要有一个 Firebase 项目以及适用于您的应用的 Firebase 配置文件。

  1. 如果您还没有 Firebase 项目,请在 Firebase 控制台中创建一个。如果您已经有与自己的移动应用相关联的现有 Google 项目,请点击导入 Google 项目。如果没有,请点击添加项目
  2. 点击将 Firebase 添加到您的 Android 应用,然后按设置步骤操作。如果您是导入现有 Google 项目,系统可能会自动执行这些操作,您只需下载配置文件即可。
  3. 出现提示时,输入应用的软件包名称。请务必输入应用在使用的软件包名称;只有在将应用添加到 Firebase 项目时您才能进行此设置。
  4. 最后,您要下载一个 google-services.json 文件。您可以随时重新下载此文件。
  5. 如果尚未将此文件复制到项目的模块文件夹(通常是 app/),请执行此操作。
注意 :如果您有多个定义了不同软件包名称的应用版本,则必须在 Firebase 控制台中将每个应用版本添加到您的项目。
添加 SDK

如果希望将 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有一点点关系好吧,所以,别着急,既然能说,那肯定这些都是必须要有的,我还能忽悠你不成,请看大屏幕:

Android 应用集成Firebase 的Cloud Message(FCM)_第2张图片

你老看看,我没有忽悠你的对吧,哈哈。

下面就完全是Could Message的步骤了,本文的核心哈:

1. 在 Android Studio 中,将 FCM 依赖项添加至您的应用级 build.gradle 文件:

compile 'com.google.firebase:firebase-messaging:15.0.0'

2.将以下内容添加至您应用的清单中:


    
        
    

效果如下:(特别说明:手机需要VPN搭梯子)

Android 应用集成Firebase 的Cloud Message(FCM)_第3张图片

注意:这个通知需要在应用程序处于后台都是可以接受到推送的,只有在整个进程被杀掉(通过设置-应用程序-强制关闭)时,才不会再接受到推送

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的初步集成,下面在来说下,然后就可以收工了,哇哈哈哈。

Android 应用集成Firebase 的Cloud Message(FCM)_第4张图片


写在结束的话:以上记录是为了把集成方式写下来,以防下次记忆丢失或者不准确,当然,如果能帮助到同时需要这方面的资料的同学,我也将不胜荣幸。





你可能感兴趣的:(Android的学习之路)