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