FCMへの移行手順: Android¶
Googleからアナウンスされている通り、GCMは2019/4/11までに廃止が予定されております。すでにReproのプッシュ通知をGCMで実装している場合は、それまでに以下の手順を参照し、FCMでの実装に移行してください。
移行手順¶
Google Cloud PlatformのプロジェクトをFirebase Consoleへ移行する¶
Firebase ConsoleからGCMで利用していたプロジェクトを選択して作成してください:

Google Cloud Platformのプロジェクト番号と、Firebase Consoleの送信者IDが同一であるか確認してください。Google Cloud Platformのプロジェクト番号は Google Cloud Platform > IAMと管理 > 設定 のプロジェクト番号から確認できます:
Firebase Consoleの送信者IDは 設定 > クラウドメッセージング の送信者IDから確認できます:
FCMを設定する¶
- アプリの登録 の手順を参照し、
google-services.json
をダウンロードしてください。 - Firebaseの秘密鍵を生成 と Firebaseの秘密鍵をReproに登録 の手順を参照し、Firebaseの秘密鍵をReproに登録してください。
Repro Android SDKのアップデート¶
アプリケーションの app/build.gradle
を開き、 repro-android-sdk
のバージョンを 3.1.1
以上に変更してください:
dependencies {
...
- implementation 'io.repro:repro-android-sdk:3.0.0'
+ implementation 'io.repro:repro-android-sdk:3.1.1'
...
}
Firebase SDKを導入する¶
google-services.json
をアプリモジュールのディレクトリにコピーしてください。プロジェクトのbuild.gradleを以下のように修正してください:
buildscript { ... dependencies { ... + classpath 'com.google.gms:google-services:4.2.0' } } allprojects { ... repositories { ... + google() } }
アプリのbuild.gradleに以下のように修正してください:
dependencies { - implementation 'com.google.android.gms:play-services-gcm:15.0.1' + implementation 'com.google.firebase:firebase-core:16.0.4' + implementation 'com.google.firebase:firebase-messaging:17.3.4' ... } +apply plugin: 'com.google.gms.google-services'
AndroidManifest.xmlファイルを編集する¶
io.repro.android.GCMReceiver
を io.repro.ReproReceiver
に修正してください:
<receiver
- android:name="io.repro.android.GCMReceiver"
+ android:name="io.repro.android.ReproReceiver"
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>
Registration IDの取得方法を変更する¶
Repro.enablePushNotification
の呼び出しの引数を削除してください。import io.repro.android.Repro; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ... Repro.setup(this, "YOUR_APP_TOKEN"); - Repro.enablePushNotification("SENDER_ID"); + Repro.enablePushNotification(); ... } }
FirebaseMessagingService
を継承したクラスのonNewToken
にてRepro.setPushRegistrationID
を呼び出してください。import io.repro.android.Repro; public class MyFirebaseMessagingService extends FirebaseMessagingService { ... @Override public void onNewToken(String token) { Repro.setPushRegistrationID(token); } ... }
以下をAndroidManifest.xmlの
<application>
タグの中に追加してください。<service android:name=".MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
カスタムReceiver¶
カスタムReceiverを引続き利用する¶
カスタムReceiverを実装している場合、FCMへ移行後も引続き利用可能です。この場合、カスタムReceiverが継承するクラスを ReproReceiver
に変更してください。
-public class Receiver extends io.repro.android.GCMReceiver {
+public class Receiver extends io.repro.android.ReproReceiver {
@Override
public void onReceive(Context context, Intent intent) {
...
カスタムReceiverをFirebaseMessagingServiceに移行する¶
カスタムReceiverからFirebaseMessagingServiceへ移行する場合は、下記の手順を参考してください。
カスタムReceiverを削除し、
AndroidManifest.xml
から下記のタグを削除してください:<receiver android:name="your.package.name.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>
以下のXML中の "YOUR_PACKAGE_NAME" をアプリケーションのパッケージ名に置き換え、AndroidManifest.xmlの
<application>
タグの中に追加してください。<receiver android:name="io.repro.android.ReproReceiver" 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>
注釈
AndroidManifest内のreceiverの登録は、FCM移行後も必要になります。
プッシュ通知受信時の動作をカスタマイズする を参照し、FirebaseMessagingServiceのonMessageReceivedメソッドを実装してください