Push通知

1. FCM 設定ガイド

Firebase Console にアプリケーション プロジェクトを追加し、設定ファイル google-services.json をダウンロードします。 また、Tapjoy LTV ダッシュボードの API キーと Sender ID を入力します。

Sender Id と API キーの指定の詳細は こちらをご参照ください。

アプリにプッシュ通知のための Firebase SDK を設定するには、ダウンロードした google-services.json ファイルをアプリプロジェクトのルートディレクトリに配置します。

buildscript > dependencies を開き、以下を追記します:

    classpath 'com.google.gms:google-services:4.0.1’

build.gradle を開き、以下を追記します:

Maven { 
  url ‘https://maven.google.com’ 
  name ‘Google’ 
}

implementation "com.google.firebase:firebase-messaging:23.0.0"

最後に、 build.gradle ファイルに以下を追加します。

    apply plugin: 'com.google.gms.google-services' 

Firebase v23.0.0 をご利用の場合、 minSdkVersion 26 とするか、もしくは minSdkVersion 19 とした上で Java 8 を使用します。

Java バージョンは アプリレベルの build.gradle で指定できます(VERSION_1_8 == Java 8):

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_1_8
      targetCompatibility JavaVersion.VERSION_1_8
    }

Tapjoy プッシュ通知 API を実装

プロジェクトに FirebaseMessagingService を継承したクラス、および FirebaseInstanceIdService を継承したクラスを作成します。

作成したそれぞれののクラスから、Tapjoy プッシュ通知用の以下のAPIをそれぞれ呼び出します:

java
    Tapjoy.setReceiveRemoteNotification(remoteMessage.getData());
    Tapjoy.setDeviceToken(deviceToken);

Tapjoy SDK に同梱された EasyApp での実装例を示します:

java
    public class FCMMessageService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
       Tapjoy.setReceiveRemoteNotification(remoteMessage.getData());
    }

このクラスはデバイストークンが設定されるメソッドをオーバーライドする必要があります。 setDeviceToken は Tapjoy connect が完了した後に呼ばれる必要があります。Tapjoy connect が終了していない場合はデバイストークンを保持しておき、のちの connect successのコールバックで設定します。

EasyAppでの例では:

java
  @Override
  public void onNewToken(String deviceToken) {
  2    // Get updated InstanceID token.    
  3    if (deviceToken != null) {
  4        if (Tapjoy.isConnected()) {
  5            Tapjoy.setDeviceToken(deviceToken);        
  6        } else {
  7            token = deviceToken;        
  8        }
  9    }
  10}

Go to your app AndroidManifest.xml, add the following code:

<service android:name="<your_FirebaseMessagingService_name">
 <intent-filter>
   <action android:name="com.google.firebase.MESSAGING_EVENT"/>
 </intent-filter>
</service>

プッシュを送るためにはAPI KeyとSender IDが必要になります。Tapjoyダッシュボード上部の"設定 - アプリ設定"メニューを開き、画面左のPush通知から登録してください:

Sender ID と API Key は Firebase Console から取得できます。

Push通知メモ

Tapjoyで同時に複数のPushを送信できますか?

はい。詳細については複数Push通知をご参照ください。

Push証明書の期間がすぐきれます。

期間切れまで新しい証明書をアップロードしてください。

2. カスタムフィールドの送信

Push通知ではカスタムフィールドを利用し、ダッシュボードで設定した文字列をユーザーに見えない形でTapjoyのプッシュ通知と共に送信できます。このカスタムフィールドは任意の文字列が設定かのうで、アプリで解釈する事によりアプリ内で自由に対応を制御できます。よくある使い方としては、プッシュ通知を押したユーザーに仮想通貨を付与したり、カスタムURLスキームを利用してアプリ内の特定の場所に誘導したりします。詳細についてはPush通知のカスタムフィールドをご参照ください。

この方法によって送られた情報をアプリケーションで取得するには少しのコーディングをする必要があります。カスタムフィールドのペイロードは Intent の StringExtra で送られます。 使用方法に合わせ、下記のようにアプリのメインのActivity (Launcher activity) の onCreate および onNewIntent にコードを追加します:

  // ユーザーがプッシュメッセージをクリックした際に呼ばれます
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    ...
    String payload = getIntent().getStringExtra(Tapjoy.INTENT_EXTRA_PUSH_PAYLOAD);
    if (payload != null) {
      Log.d("Tapjoy", "Tapjoy push notification payload: " + payload);
    }
    ...
  }

  // アプリ起動中にプッシュメッセージを取得した際に呼ばれます
  @Override
  protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    String payload = getIntent().getStringExtra(Tapjoy.INTENT_EXTRA_PUSH_PAYLOAD);
    if (payload != null) {
      Log.d("Tapjoy", "Tapjoy push notification with payload: " + payload);
    }
  }

3. プッシュ通知アイコンのカスタマイズ

Tapjoyダッシュボードからのプッシュ通知(FCMメッセージ)送信時のアイコンはデフォルトではアプリケーションのアイコンが表示されます。

AndroidManifest.xml<application> タグにリソースを下記のように指定する事によりアイコンをカスタマイズできます:

// 通知バー用 小アイコン
<meta-data android:name="com.tapjoy.notification.icon" android:resource="@drawable/{id}"/>  

// 通知パネル用 大アイコン (SDK 11.6.0 以降)
<meta-data android:name="com.tapjoy.notification.icon.large" android:resource="@drawable/{id}"/>  

// Android 5.0 以前の端末用の通知バー用アイコン(SDK 11.6.0 以降)
<meta-data android:name="com.tapjoy.notification.icon.compat" android:resource="@drawable/{id}"/>

4. Push 通知のオプトアウト (Android SDK 11.1 以降)

以下のAPIでPush通知の受信のオプトアウトの制御ができます。 このAPIは、Tapjoy.connect が成功した後に使用可能になります。

java
    // 現在の設定値の取得
    boolean Tapjoy.isPushNotificationDisabled();

    // Push通知オプトアウトの設定・解除
    void Tapjoy.setPushNotificationDisabled(boolean);

アプリの設定画面に、トグルボタン又はチェックボックスとして実装する事をお勧めします。