跳转至

SDK 集成

iOS

1、开发者在执行融云 SDK 初始化方法 init 后,可以调用 recordLaunchOptionsEvent 接口统计推送点击率,通过 getPushExtraFromLaunchOptions 接口获取推送的自定义附加信息。代码示例如下:

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //开发者自己的业务代码

    //初始化融云SDK
    [[RCIM sharedRCIM] initWithAppKey:RONGCLOUD_IM_APPKEY];

    //开发者自己的业务代码

   /**
   * 统计推送打开率
   */
  [[RCIMClient sharedRCIMClient] recordLaunchOptionsEvent:launchOptions];

  /**
   * 获取融云推送服务扩展字段
   * nil 表示该启动事件不包含来自融云的推送服务
   */
  NSDictionary *pushServiceData = [[RCIMClient sharedRCIMClient] getPushExtraFromLaunchOptions:launchOptions];
  if (pushServiceData) {
    NSLog(@"该启动事件包含来自融云的推送服务");
    for (id key in [pushServiceData allKeys]) {
      NSLog(@"%@", pushServiceData[key]);
    }
  } else {
      NSLog(@"该启动事件不包含来自融云的推送服务");
  }
}

2、收到远程推送后,可以调用 recordRemoteNotificationEvent 接口统计推送点击率,通过 getPushExtraFromRemoteNotification 接口获取推送的扩展字段。代码示例如下:

- (void)application:(UIApplication *)application
    didReceiveRemoteNotification:(NSDictionary *)userInfo {

    /**
     * 统计推送打开率
     */
    [[RCIMClient sharedRCIMClient] recordRemoteNotificationEvent:userInfo];

    /**
     * 获取融云推送服务扩展字段
     * nil 表示该启动事件不包含来自融云的推送服务
     */
    NSDictionary *pushServiceData = [[RCIMClient sharedRCIMClient] getPushExtraFromRemoteNotification:userInfo];
    if (pushServiceData) {
        NSLog(@"该远程推送包含来自融云的推送服务");
        for (id key in [pushServiceData allKeys]) {
            NSLog(@"key = %@, value = %@", key, pushServiceData[key]);
        }
    } else {
        NSLog(@"该远程推送不包含来自融云的推送服务");
    }

}

Android

1、在 AndroidManifest.xml 文件里面,加上对应 push 统计消息的 url 过滤。以 TestPushActivity 为例如下:

<activity
 android:name=“.activity.TestPushActivity"
 android:launchMode="singleTask"
 android:screenOrientation="portrait">

 <intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />

  <data
    android:host="此处为你的包名"
    android:pathPrefix="/push_message"
    android:scheme="rong" />
 </intent-filter>
</activity>

2、在 TestPushActivity 里可以通过 intent.getData() 方法获取 url 里各数据内容,并根据业务需要进行处理,示例代码如下:

/**
 * 当前 Activity 只是演示了一个操作过程,未加载任何 view,
 */
public class TestPushActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        getPushMessage(intent);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        getPushMessage(intent);
    }

    /**
     * Android push 消息
     */
    private void getPushMessage(Intent intent) {

        if (intent != null && intent.getData() != null && intent.getData().getScheme().equals("rong")) {

            //该条推送消息的内容。
            String content = intent.getData().getQueryParameter("pushContent");
            //标识该推送消息的唯一 Id。
            String id = intent.getData().getQueryParameter("pushId");
            //用户自定义参数 json 格式,解析后用户可根据自己定义的 Key 、Value 值进行业务处理。
            String extra = intent.getData().getQueryParameter("extra");
            //统计通知栏点击事件.
            RongIMClient.recordNotificationEvent(id);
            Log.d("TestPushActivity", "--content:" + content + "--id:" + id + "---extra:" + extra);
        }
    }
}

url 携带字段说明:

字段名 描述
pushContent 该条推送消息的内容。
pushId 标识该推送消息的唯一 Id。
extra 用户自定义参数 json 格式,解析后用户可根据自己定义的 KeyValue 值进行业务处理。