FCMへの移行手順: Unity¶
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 Unity Packageのアップデート¶
Unity Package 更新手順 に従って、Repro Unity Package 4.1.0以上にアップデートしてください。
Firebase SDKを導入する¶
GCMへの依存を削除する¶
Assets/Plugins/Android/libs
に配置されている play-services-gcm-x.x.x.aar
ファイルを削除してください。
FirebaseのUnity Packageをインポートする¶
Firebaseの公式ドキュメント を参照し FirebaseMessaging.unitypackage をインポートしてください。
警告
Repro Unity Package 6.5.0 以下、あるいは Firebase Cloud Messaging for Unity 7.2.0 以下を使用される場合には FirebaseInstanceId.unitypackage を追加でインポートしてください。
警告
Firebaseのパッケージをインポートした後、 導入時に修正したAndroidManifest.xml がFirebaseの設定で上書きされることがあります。そのため、インポート後にもう一度 AndroidManifest.xml
を修正してください。
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の取得方法を変更する¶
FCMのRegistration IDは こちら の方法で取得可能です。取得したRegistration IDを Repro.SetPushRegistrationID()
でセットしてください。また、 Repro.enablePushNotification
の呼び出しの引数を削除してください。
using UnityEngine;
public class MyBehaviour : MonoBehaviour {
void Start () {
...
#if UNITY_ANDROID
- Repro.EnablePushNotification(SENDER_ID);
+ Repro.EnablePushNotification();
+ Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
+ Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
#endif
...
}
+#if UNITY_ANDROID
+ public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
+ Repro.SetPushRegistrationID(token.Token);
+ }
+
+ public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
+ ...
+ }
+#endif
}