Android 厂商统计
大约 3 分钟
Android 厂商统计
环信推送提供谷歌、小米、魅族、OPPO、vivo、华为厂商通道的送达、点击数据统计功能。
送达设置
1、魅族需要设置回调白名单才能实现相关功能。方法如下:
1.1、登陆魅族官方平台
登陆 魅族开放平台,点击【Flyme 推送】。
1.2、选择配置应用
选择您要设置的应用名称,点击【打开应用】。
1.3、设置回调地址
根据所在集群设置回调地址(配置 http),私有化部署见部署手册提供的环信IM REST API信息。 格式为:http://域名/orgname/appname/push/report/meizu
。
1.4、开启送达回执
魅族平台设置完回执地址后,需要在环信开发者后台,即时推送 → 配置证书 → 魅族 配置中开启推送送达回执,才能获取到魅族通道送达数据。
2、华为需要进行推送回执配置才能实现相关功能。方法如下:
2.1、登陆华为官方平台
登陆 华为消息推送平台,点击【我的项目】。
2.2、选择配置应用
选择您要设置的应用名称,点击【推送服务】,点击【配置】。
2.3、开通应用回执状态
开通回执状态
2.4、测试并添加回执
填写回执配置,测试回执通过后进行提交。
2.4.1、回调地址
根据所在集群设置回调地址(配置 https,注意:华为只支持https地址配置) 格式为:https://域名/orgname/appname/push/report/huawei
,私有化部署见部署手册提供的环信IM REST API信息。
2.4.2、证书内容
提示
证书内容在2023年3月4日过期,环信将在2023年2月进行更新,届时您需要同步更新。
3、FCM 客户端处理上报
继承FirebaseMessagingService
的Service
里去实现handleIntent
方法,添加上报送达事件的代码
public class EMFCMMSGService extends FirebaseMessagingService {
@Override
public void handleIntent(@NonNull Intent intent) {
super.handleIntent(intent);
Bundle bundle = intent.getExtras();
if(bundle != null){
String push = bundle.getString("EPush");
if(push != null){
try {
String taskId = "";
JSONObject pushJson = new JSONObject(push);
String provider = pushJson.optString("provider");
JSONObject report = pushJson.optJSONObject("report");
if(report != null){
taskId = report.optString("task_id");
}
EMClient.getInstance().pushManager().asyncReportPushAction(taskId, provider, EMPushManager.EMPushAction.ARRIVE, new EMCallBack() {});
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}
启动页的onCreate
里添加上报点击事件的代码。
Bundle bundle = getIntent().getExtras();
if(bundle !=null){
String push = bundle.getString("EPush");
if(push != null){
try {
String taskId = "";
JSONObject pushJson = new JSONObject(push);
String provider = pushJson.optString("provider");
JSONObject report = pushJson.optJSONObject("report");
if(report != null){
taskId = report.optString("task_id");
}
EMClient.getInstance().pushManager().asyncReportPushAction(taskId, provider, EMPushManager.EMPushAction.CLICK, new EMCallBack() {});
} catch (JSONException e) {
e.printStackTrace();
}
}
}
点击事件上报
厂商推送的点击事件上报,需要在 App 端调用 API 上报实现统计。
//taskId 与 provider 需从推送数据里获取,如果获取 taskId 失败则传空字符串
EMClient.getInstance().pushManager().asyncReportPushAction(taskId, provider, action, new EMCallBack(){});
以小米推送为例,在厂商的点击回调里去解析上报点击事件。
public void onNotificationMessageClicked(Context context, MiPushMessage message) {
String content = message.getContent();
try {
// JSON 结构为 {"EPush":{"provider":{"xxx"},"report":{"task_id":"xxx"}}}
JSONObject json = new JSONObject(content);
JSONObject pushJson = json.optJSONObject("EPush");
String taskId = "";
if(pushJson != null){
String provider = pushJson.optString("provider");
JSONObject reportJson = pushJson.optJSONObject("report");
if(reportJson != null){
taskId = reportJson.optString("task_id");
}
EMClient.getInstance().pushManager().asyncReportPushAction(taskId, provider, EMPushManager.EMPushAction.CLICK, new EMCallBack() {});
}
} catch (JSONException e) {
e.printStackTrace();
}
}