はじめに
みなさん、新年度はいかがですか?
様々な変化があり、何かと忙しい時期ですね。
さて、変化といえば、今月11日でGCMが終了しました。FCMトークンとGCMトークンは互換性があるため、サーバサイドでFCM対応できていれば、4/11以降もプッシュ通知を送ることが可能な場合があるようですが、アプリがGCMに接続していると新規トークンの発行が出来なくなる可能性があります。
今回は、UnityでPushwooshを使用している方向けに、FCM移行について説明します。AndroidネイティブでAWS SNSを使用している方は以前の記事をご覧ください。
Firebaseプロジェクトの引き継ぎ
FCM対応するには、まずFirebaseプロジェクトが必要になります。GCP上でGCMが設定されているGoogleアカウントにログインした状態で、Firebaseコンソールにアクセスします。
「プロジェクトの新規作成」を選択し、「プロジェクト名」右側の「▼」をクリックすると、引き継ぎ元GCPプロジェクトを選択できるので、引き継ぎたいGCMが設定されている物を選択します。
PushwooshのAPIキーの差し替え
Pushwooshに登録されているGCM時代のAPIキーは、FCMに引き継がれているため、変更しなくとも引き続き使用可能ですが、新しいサーバーキーに差し替えることが推奨されているため、ついでに差し替えておきましょう。
FCMサーバーキーの取得
Firebaseで引き継がれたプロジェクトを開き、歯車アイコンから「プロジェクトの設定」をクリックします。
クラウドメッセージングを開き、「サーバーキー」をコピーします。
google-services.jsonのダウンロード
Unityアプリに組み込む必要があるため、google-services.jsonをあらかじめダウンロードしておきましょう。
全般を開き、「最新の構成ファイルをダウンロード」の部分から、google-services.jsonをダウンロードできます。
Pushwooshへの登録
Pushwooshで移行したいApplicationを開き、「Configure」を開きます。
Androidの「Edit」をクリックし、「API Key」に先ほどのサーバーキーを貼り付けます。
「Sender ID」は変わっていないことを確認しておきましょう。(変わっている場合は、Firebaseプロジェクトが引き継げていない可能性があるため、もう一度引き継ぎを確認してください。)
Pushwoosh Unity Frameworkのアップデート
バージョン5.12.0以前を利用している場合は、GCMに接続しているため、最新版にアップデートする必要があります。
古いFrameworkの削除
GCM時代のFrameworkには、Google Play Service関係のバイナリが内包されていますが、FCMに対応したFrameworkには不要なので、削除します。
ただし、他から依存している場合は、注意深く削除してください。
以下に古いFrameworkのファイルを列挙します。
- Editor
- PushwooshBuildManager.cs
- Plugins
- Android
- assets
- api_key.txt
- play-services-*
- pushwoosh-*
- support-*
- PushwooshAndroidManifest.xml
- assets
- iOS
- PushNotificationManager.h
- Pushwoosh.a
- UnityRuntime.m
- WP8
- Newtonsoft.json.dll
- PushSDK.dll
- PushwooshForWindowsPhone.dll
- WSA
- Newtonsoft.json.dll
- PushSDK.winmd
- PushwooshForWindows.dll
- Android
- Pushwoosh
- 全ファイル
最新版Frameworkの導入
以下から最新版のunitypackageをダウンロードし、importします。
https://github.com/Pushwoosh/pushwoosh-unity/releases
google-services.jsonの配置
Assetsフォルダ配下に、先ほどダウンロードしたgoogle-services.jsonを配置します。
以上で完了です。実機に転送して、プッシュ通知が届くことを確認しましょう。
Androidビルドが通らない場合
Pushwoosh Frameworkのアップデートでは、ネイティブプラグインの差し替えが発生するため、ビルド時エラーが発生する場合があります。
そんな時の対処法を紹介します。
Cause: Dex cannot parse version 52 byte code.
Java 1.7でビルドしている場合に発生します。PushwooshはJava 1.8でビルドされているためです。
できれば、最新のUnityにバージョンアップしましょう。今すぐバージョンが難しい場合は、Java 1.8に設定変更することで、ビルドを通すことができます。
build.gradleのテンプレート編集
Unityでは、build.gradleファイルがテンプレート化されており、いくつかの設定項目は変数で置き換えることができるようになっています。さらに、このテンプレートを編集することも可能で、今回はテンプレートを編集することで、build.gradleの設定を変更していきます。
まず、Player Settingsを開き、Publishing Settings > Build Systemが「Gradle」になっていることを確認します。
次に、「Custom Gradle Template」にチェックを入れると、「Assets/Plutins/Android/mainTemplate.gradle」が生成されます。
このファイルがあると、Unityはこちらのテンプレートを優先的に参照するようになります。
gradleバージョンを3.x.xに変更
古いUnityでは、Gradleの2.x.xを使用していますが、Java 1.8に対応させるには、3.x.xが必要なので、変更します。
また、Gradle 3.x.xから、mavenリポジトリが変更となっているため、リポジトリも合わせて追記します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | buildscript { repositories { jcenter() // 以下追記 maven { url 'https://maven.google.com' } } dependencies { // バージョンを3.x.xに変更 classpath 'com.android.tools.build:gradle:3.0.0' } } |
Java 1.8の設定
Pushwooshに合わせて、アプリ全体をJava 1.8に変更するため、設定変更します。
1 2 3 4 5 6 7 8 | android { // 以下追記 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } ・・・ } |
Error:Minimum supported Gradle version is…
このエラーの時は、gradle-wrapper.propertiesのdistributionUrlを変更し、指定のGradleをダウンロード・インストールする必要がありますが、UnityでBuild and Runする場合、gradle-wrapper.propertiesを変更することができません。
この場合は、一旦Android用ソースをExportし、Android Studioでビルドする必要があります。
まず、Build and Runではなく、Android用ソースをExportするために、Build Settingsを開き、Android > Export Projectにチェックを入れます。
そして、「Export」ボタンを押すと、ソースが書き出されます。
書き出されたソースのフォルダをAndroid Studioで開き、Runボタンを押せばそのままビルドが通ります。
(Gradleの依存関係は、Android Studioで自動的に解消されます。)
さいごに
プッシュ通知はユーザを繫ぎ止める大事な機能です。しっかり対応して、引き続きプッシュ通知機能を使えるように、早急にアップデートしましょう!