推送消息

1. FCM配置指南

在Firebase Console 添加应用工程并下载配置文件“google-services.json”,同时在LTV dashboard更新API密钥和Sender ID。

关于如何得到Sender ID 和API 密钥,请参考这里

在您的APP中添加Firebase SDK,将已下载的“google-services.json”文件添加到您工程的根目录。

buildscript > dependencies中添加:

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

在app level build.gradle中添加:

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

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

在底部添加:

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

对于 Firebase v23.0.0,需要使用 minSdkVersion 26 or minSdkVersion 19 和 Java 8.

您可以在app level build.gradle 设置Jave版本,比如(VERSION_1_8 == Java 8):

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_1_8
      targetCompatibility JavaVersion.VERSION_1_8
    }

集成Tapjoy推送消息

在您App的工程中创建一个类扩展FirebaseMessagingService

在这两个类中,分别调用Tapjoy push notification APIs

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

示例:

java
    public class FCMMessageService extends FirebaseMessagingService {

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

此类还应重载设置设备令牌的方法。 setDeviceToken只能在Tapjoy连接后调用。 如果 Tapjoy尚未连接,您应该存储设备令牌并稍后在连接成功回调中设置它。

示例:

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}

在您应用的 AndroidManifest.xml添加如下:

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

在发送push notification前,您需要在Tapjoy控制面板中设置API server key 和 sender ID。请点击控制面板左上方的”设置”然后在左菜单栏中选择”Push”来配置您的key。

Sender ID和API Key可以在Firebase Console找到

推送注意事项

我可以在使用Tapjoy的同时选择另一个push提供商或者我自己的push服务吗?

可以. 请参考文章.

我的push认证快要到期了

请在到期前替换一个新的认证。

2. 发送自定义推送

当用Tapjoy发送推送通知时,您可以发送自定义负载(填入控制面板但用户不可见的字符串)。自定义负载可以为任意字符串,您的app可以用您设定的反应方式显示字符串。常见应用包括奖励用户反馈通知消息,在应用中通过自定义URL给用户发送特定位置。想要了解如何在您的app上自定义推送负载,请点击自定义负载文档

要使您的应用程序能够读取通过此方法发送的信息,您需要实现一些代码。 自定义有效负载通过Intent的 StringExtra 传递。 请在应用的 Main Activity(Launcher Activity)的 onCreateonNewIntent 中添加适当的代码,如下所示:

  // called when the user clicks the push message
  @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);
    }
    ...
  }

  // called when the user gets push message while playing the app
  @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> 中自定义您的推送图标:

//notification bar small icon. 
<meta-data android:name="com.tapjoy.notification.icon" android:resource="@drawable/{id}"/>  

//notification panel large icon. (above 11.6.0)  
<meta-data android:name="com.tapjoy.notification.icon.large" android:resource="@drawable/{id}"/>  

//The icon which is using partial alpha value below android 5.0 (above 11.6.0)
<meta-data android:name="com.tapjoy.notification.icon.compat" android:resource="@drawable/{id}"/>

4. Android SDK 11.1+ 推送屏蔽API

您可以通过使用API筛选出不想接受推送通知的用户。使用之前您应该先通过调用Tapjoy.connect连接Tapjoy SDK。

java
    // To get the current status
    boolean Tapjoy.isPushNotificationDisabled();

    // To set/unset push notification disabled
    void Tapjoy.setPushNotificationDisabled(boolean);

我们建议在您的app设置页面添加触发开关或检查框界面。