在智慧型手机普及的年代,在手机里常不定时收到特定App的提示讯息,大家对这样的经验一定不陌生,在本范例里将教学如何使用Google Firebase从Ameba Client端将讯息推送至手机。
首先我们使用的Firebase Cloud Messaging(FCM)是一种跨平台的讯息传递方案,可让您免费可靠地传递消息。
使用FCM,您可以通知客户端应用程序(App),能同步更新电子邮件或其他数据。您可以发送讯息来推动用户的参与。对于即时讯息传递内容,一个讯息最多可传输4KB的payload到客户端应用程序。
FCM实现包括两个用于发送和接收的主要部份:
1. 受信任的环境,例如Cloud Functions for Firebase或用于构建,定位和发送讯息的应用服务器。
2. 接收消息的iOS,Android或Web(JavaScript)客户端应用程序。
了解到这里,我们得知Ameba只要实现http client功能,即可以推送讯息至特定的APP里。
首先我们要先架设开发Android App的环境,请大家先至Android官网下载Android Studio
接着我们可以使用Firebase提供的Android 范例,下载Firebase Quickstart Samples
开启Android Studio并点击Import project,选择Firebase Quickstart Samples 里的messaging project,这里因为我们用不到其他的功能,所以选择messaging project即可。
Android Studio第一次开启messaging project会需要安装SDK及Google repository,可以参考以下网页进行update
等到编译app所需的要件安装完成,即能开启messaging project,Android Studio本身自带Firebase注册功能
如上图,打开工具列点击Tools->选择Firebase
右窗格即开启Firebase Assisant,接着看到Cloud Messaging,选择Set up Firebase Cloud Messaging开启注册程序
点击 Connect to Firebase
接着会带出网页,并且点击左边的Firebase并登入Gmail帐号,登录成功会进入Firebase首页
我们先留着首页,等等还需要进入Firebase Console,接着回到Android Studio
我们可以看到当网页登入成功,Android studio也带出登入资讯对话框,点击connect to Firebase
即可右窗格看到Dependencies set up correctly,并且在左窗格看到多了一个google-service.json的档案,代表此app已注册成功
此时能将手机接上电脑(按下Shift+F10)或按下工具列的Runs App,在这里请大家注意,Firebase需要手机提供Google play service(GPS)的服务,在有一些手机,预设没有安装Google Play是无法使用Firebase的范例。
如上图,messaging app在手机上安装并执行成功,此时按一下LOG TOKEN
会出现一段Token ID,此为推送讯息所需的Access Token,代表某一特定手机里所安装拥有FCM服务APP的ID,此ID是唯一的,并且在App移除再安装时会被重新分配一个Access Token,这也代表讯息能推送至某一特定手机,FCM服务还可以推送讯息至某一个NEWS(Topic),这部份可以参考Firebase topic-messaging教学:
因此我们需要把这段Access Token保存起来,如下图回到Android Studio,在底下Logcat的地方log level选取Debug,当按下App上的LOG TOKEN按钮时,Logcat就会印出这一段Access Token ID,我们把Log讯息中InstanceID Token:后面的字码先保起来。
接着我们要回到刚刚登入Firebase时所带出的网页
右上角点进前往控制台
此时在页面中已看到Android Studio在刚刚的操作中,为我们建好了messaging project
点击进入messaging project,如上图我们进入设定页面
选择 Set up
进入设定页面选择Cloud Messaging页,我们会看到Legacy server key,这段Server key也需要在程式里使用,我们先将之保存起来,接下来开始编辑程式码。
我们打开范例 “File” -> “Examples” -> “AmebaWiFi” -> “Firebase.ino”
如上图,在反白处定义了ACCESS_TOKEN及SERVER_KEY,也就是我们刚从APP保存下来的ACCESS token ID及Firebase console页面里保存的Server Key,我们将这两组ID填上去,编译并上传至Ameba之后按下Reset按钮,此时打开终端机
连上AP之后开始连线FCM Server
出现Connect to Server successful连线FCM成功,开始推送讯息,过程中会收到HTTP/1.1 200 OK代表讯息推送成功,此时打开手机萤幕,App收到来自Ameba推送的讯息