Growthbeat 2.0.9へバージョンアップのFCM対応方法について

GoogleによりGCMの廃止に伴い、Growthbeat 2.0.9以降はFirebase SDKの導入が必須となりました。

AndroidまたUnityのGrowthbeat SDK 2.0.8以下をお使いの方は、Firebase SDKに必要な導入項目を対応してください。

対応項目は、下記となります。

  1. google-service.jsonのインポート
  2. Gradleをfirebaseに変更
  3. XMLの変更

google-services.jsonのインポート

※まだFirebaseプロジェクトに移行していない場合は、下記ケースを読み、Firebaseにプロジェクトを移行してください。 

https://faq.growthbeat.com/article/23-gcm-api

Firebaseからgoogle-services.jsonをダウンロード

firebaseプロジェクトの設定画面 (歯車マーク)→プロジェクトの設定をクリックし、その画面内のAndroid設定のgoogle-services.jsonという部分をクリックし、ダウンロードしてください。

アプリプロジェクトへインポート

アプリプロジェクトのルートフォルダへ、google-services.jsonをインポートしてください。
google-services.jsonの設定は以上となります。

プロジェクトルートGradleにrepository追加

dependencies {

    classpath 'com.google.gms:google-services:4.0.1'

}

GradleをFirebaseに変更

GooglePlayServicesのライブラリからFirebase SDKへ変更する必要がございます。 下記のように、bulid.gradleを変更してください。

※GooglePlayServicesバージョンや、Firebase SDKバージョンはご自身のプロジェクトによって異なります。

Growthbeat SDK 2.0.8以下 (GooglePlayServicesライブラリ)

dependencies {
    implementation 'com.google.android.gms:play-services-gcm:11.2.+'
    implementation 'com.google.android.gms:play-services-ads:11.2.+'
}

Growthbeat SDK 2.0.9以上(Firebase SDK)

dependencies {
    implementation 'com.google.firebase:firebase-messaging:15.0.+'
}

Gradleファイルの変更は以上となります。

AndroidManifest.xmlの変更

プッシュ通知受け取り方法が大きく変わっているので、AndroidManifest.xmlの変更ができていないと、プッシュ通知を受け取れない状態となります。 こちらも下記に従って変更してください。

Growthbeat SDK 2.0.8以下

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE" />
<permission
    android:name="YOUR_PACKAGE_NAME.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<application>
    <!-- ... -->
    <activity
        android:name="com.growthpush.view.AlertActivity"
        android:configChanges="orientation|keyboardHidden"
        android:launchMode="singleInstance"
        android:theme="@android:style/Theme.Translucent" />
    <service
        android:name="com.growthpush.TokenRefreshService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.gms.iid.InstanceID"/>
        </intent-filter>
    </service>
    <service android:name="com.growthpush.RegistrationIntentService"/>
    <service
        android:name="com.growthpush.ReceiverService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
    </service>
    <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="YOUR_PACKAGE_NAME" />
        </intent-filter>
    </receiver>
</application>

Growthbeat SDK 2.0.9以上

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<application>
    <!-- ... -->
    <activity
        android:name="com.growthpush.view.AlertActivity"
        android:configChanges="orientation|keyboardHidden"
        android:launchMode="singleInstance"
        android:theme="@android:style/Theme.Translucent" />
    <service android:name="com.growthpush.TokenRefreshService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>
    <service android:name="com.growthpush.ReceiverService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>
</application>