Android

Pushwoosh UnityでのFCM移行

投稿日:

はじめに

みなさん、新年度はいかがですか?
様々な変化があり、何かと忙しい時期ですね。
さて、変化といえば、今月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
    • iOS
      • PushNotificationManager.h
      • Pushwoosh.a
      • UnityRuntime.m
    • WP8
      • Newtonsoft.json.dll
      • PushSDK.dll
      • PushwooshForWindowsPhone.dll
    • WSA
      • Newtonsoft.json.dll
      • PushSDK.winmd
      • PushwooshForWindows.dll
  • 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リポジトリが変更となっているため、リポジトリも合わせて追記します。

Java 1.8の設定

Pushwooshに合わせて、アプリ全体をJava 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で自動的に解消されます。)

さいごに

プッシュ通知はユーザを繫ぎ止める大事な機能です。しっかり対応して、引き続きプッシュ通知機能を使えるように、早急にアップデートしましょう!

おすすめ書籍

Unityの教科書 Unity 2018完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA) Unityゲーム プログラミング・バイブル Unity2018入門 最新開発環境による簡単3D&2Dゲーム制作 (Entertainment&IDEA)

blog-page_footer_336




blog-page_footer_336




-Android
-, ,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

Kotlinで初期化を遅延する

1 はじめに2 初期化の遅延とは3 by lazy4 lateinit5 Delegates.notNull6 さいごに7 おすすめ書籍 はじめに こんにちは、前回に引き続き、Kotlinの基本的な文 ...

Android Studioでエラーログを詳細表示する

1 はじめに2 初期設定でのビルドエラーメッセージ3 詳細なビルドエラーメッセージを出力4 おまけ5 さいごに6 おすすめ書籍 はじめに こんにちは。Android開発を久しぶりにやっているのですが、 ...

GoogleMap Clusterのカスタマイズ

1 はじめに2 クラスタ内のアイテムクラス3 クラスタをレンダリングするクラス4 クラスタの色を設定する5 クラスタ化の最小個数を設定する6 クラスタのクリックイベントを拾う7 さいごに はじめに 最 ...

Kotlinのスコープ関数を調べて見た

1 はじめに2 スコープ関数とは3 スコープ関数の種類について4 with関数4.1 使い方4.1.1 withを使わない場合4.1.2 withを使う場合4.2 所感5 apply関数5.1 使い方 ...

KotlinでAndroidの双方向DataBindingを利用する

1 はじめに2 MVVMアーキテクチャ2.1 Model2.2 View2.3 ViewModel3 KotlinでAndroid DataBindingを設定4 説明用のサンプルアプリについて5 a ...

フォロー

blog-page_side_responsive

2019年4月
 123456
78910111213
14151617181920
21222324252627
282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。