2017-04-25

【Android Studio】從 GCM 移植到 FCM

參考資料 ----
Migrate a GCM Client App for Android to Firebase Cloud Messaging
Set Up a Firebase Cloud Messaging Client App on Android
Firebase Quickstart Samples for Android


Google 推出 FCM 後,一直鼓勵開發者自 GCM 移轉至 FCM,也致力簡化步驟,減少開發者在移植過程中所花費的功夫與時間。


登入 Firebase Console(主控台)


點擊 "匯入 GOOGLE 專案"



點選您要匯入 FCMGCM 專案
→ "新增 FIREBASE" 鈕



點選 "將 Firebase 加入您的 Android 應用程式"



輸入您的 app 的完整的 package 名
→  註冊應用程式



FCM 主控台會自動為您產生一個 google-services.json 檔,將它下載並存放於您的 app 專案的目錄下





 修改 build.gradle


專案層級的 build.gradle
 
buildscript {
    
    ...
    ...

    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

...
...
 


應用程式階層 build.gradle
 
...
...

dependencies {
    ...
    ...
    
    implementation 'com.google.firebase:firebase-core:10.2.1'
    implementation 'com.google.firebase:firebase-messaging:10.2.1'
    
}
// 寫在最末列
apply plugin: 'com.google.gms.google-services'
 



修改 AndroidMainfest.xml,移除之前與 GCM 有關的所有設定,因為這些工作,FCM
都包辦了。

 
<!-- 移除(或註解) 下述設定 -->
    <!-- <permission
        android:name="com.example.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    <uses-permission android:name="com.example.permission.C2D_MESSAGE" />
    -->
    <!-- App receives GCM messages. -->
    <!--
        <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    -->

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

...
...

<application
        ...
        ... >

    <!-- 收到通知時, 到狀態列要顯示的 icon -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_oracle" />
    <!-- 收到通知的背景色 -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/black" />

...
...

<!-- 移除(或註解) 下述設定 -->
<!-- 接收 GCM 的 receiver -->
        <!--
        <receiver
            android:name="com.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="com.example" />
            </intent-filter>
        </receiver>
        -->
<!-- GCM service -->
<!--
<service android:name="com.example.GCMIntentService" />
-->
 



原本的 GCMIntentService、ServerUtilities.java (參考 【Android】使用 GCM(Google Cloud Messaging) 這篇筆記)都可以移除,不需要了。



在實體機第一次執行 APP 後,關閉 APP,版本為 Oreo(8.0)(含) 以上的實體機,還要在 "自啟動管理" 開啟 APP 的自啟動選項,才能收到通知。

再回到 FCM console
Notification
新增訊息



輸入要推播的訊息內容






過一會兒後,裝置就會收到通知了。







點擊已發送的記錄,還可以看到發送統計。



相關筆記 ----
【Android】使用 GCM(Google Cloud Messaging)
【Android Studio】GCM client 端設定 - 速成篇