厂商消息报表补全

厂商消息报表补全

一、消息报表介绍

  • 个推渠道:个推sdk内部有相应的埋点,应用有收到推送的通知和透传消息的时候,会上报数据 到后台,数据报表进行展示和统计;
  • 华为渠道:华为暂时未对外提供报表数据接口,提供了回执,报表数据可以根据回执统计到到达数据;
  • 荣耀渠道:荣耀暂时未对外提供报表数据接口,提供了回执,报表数据可以根据回执统计到到达数据;
  • 魅族渠道:魅族有对外提供报表数据接口,可以统计到全量的数据;
  • 小米渠道:小米有对外提供报表数据接口;
  • oppo渠道:oppo暂时未对外提供报表数据接口,提供了回执,报表数据可以根据回执统计到到达数据;
  • vivo渠道:vivo渠道有对外提供群推报表数据,任务维度报表可以统计到全量的数据;单推没有提供报表数据,由于也未提供app维度的报表数据接口,所以app维度报表通过单推回执+群推报表的形式统计;

二、消息报表补全配置

2.1 在线个推透传

透传消息:透传消息个推只传递数据,不做任何处理,客户端接收到透传消息后需要自己去做后续动作处理,如通知栏展示、弹框等。

如果 服务端 使用纯透传模板推送的消息,需要 app 端埋点 上报展示和点击数据。这里需要注意的是,如果应用也有使用通知模板推送,并携带了透传内容。

app 端需要进行区分判断“是否上报埋点”(可在 服务端透传消息 里面添加一个type字段用以区分纯透传消息,如果是的话则需要调用埋点接口)。

客户端示例代码:

    @Override
      public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
          byte[] payload = msg.getPayload();
          String data = new String(payload);
          Log.d(TAG, "receiver payload = " + data);//透传消息文本内容

          //taskid和messageid字段,是用于回执上报的必要参数。详情见下方示例方法
          String taskid = msg.getTaskId();
          String messageid = msg.getMessageId();

      }

      /**
      * 上报个推透传消息的展示回执。如果透传消息本地创建通知栏消息“展示”了,则调用此方法上报。
      */
      public boolean pushGtShow(Context context, String taskid ,String messageid) {
          int gtactionid = 60001;//gtactionid传入60001表示个推渠道消息展示了
          boolean result = PushManager.getInstance().sendFeedbackMessage(context, taskid, messageid, gtactionid);
          return result;
      }

      /**
      * 上报个推透传消息的点击回执。如果透传消息本地创建通知栏消息被“点击”了,则调用此方法上报。
      */
      public boolean pushGtClick(Context context, String taskid ,String messageid) {
          int gtactionid = 60002;//gtactionid传入60002表示个推渠道消息点击了
          boolean result = PushManager.getInstance().sendFeedbackMessage(context, taskid, messageid, gtactionid);
          return result;
      }

2.2 离线厂商通知

如果服务端使用 通知+intent 方式推送消息。需要在 intent 中添加S.gttask=;,添加后个推会自动在 intent 里拼接 taskid 和 actionid,app 端接收到参数以后,上报埋点。
app 端接收到拼接之后的 intent 如下:

intent://com.getui.push/detail?#Intent;scheme=gtpushscheme;launchFlags=0x4000000;package=包名;component=应用包名/activity路径;S.gttask=OSA-0323_4bVmhahaUIYd7lPef8W1qXU9;S.gtaction=actionid;S.payload={payload};end

由于华为、荣耀、oppo无点击数报表返回,vivo无单推点击数报表返回,所以需要您在客户端埋点 上报点击数据。点击厂商通知以后,在触发的activity的 onCreate() 和 onNewIntent方法里面接收相关参数,上报这 3 个离线厂商消息的点击数据。

客户端示例代码:

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo);
        //获取自定义透传参数值
        Intent intent = getIntent();
        if (null != intent) {
            //上报华为、oppo、vivo、荣耀离线点击数据
            pushClick(intent);
        }
    }


    //或者在onNewIntent中接收(某些特殊情况下,例如:DemoActivity的启动模式是singleTop、singleTask或者是singleInstance,并且DemoActivity是打开的情况下)
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        //获取自定义透传参数值
        if (null != intent) {
            //上报华为、oppo、vivo、荣耀离线点击数据
            pushClick(intent);
        }
    }


    public boolean pushClick(Intent intent) {
        boolean result = false;
        try {
            String taskid = intent.getStringExtra("gttask");
            String gtaction = intent.getStringExtra("gtaction");
            String clientid = PushManager.getInstance().getClientid(context);
            String uuid = UUID.randomUUID().toString().replaceAll("-", "");
            // 这里的messageid需要自定义, 保证每条消息汇报的都不相同
            String contentToDigest = taskid + clientid + uuid;
            byte[] md5s = MessageDigest.getInstance("MD5").digest(contentToDigest.getBytes(StandardCharsets.UTF_8));
            String messageid = new BigInteger(1, md5s).toString(16);

            /***
             * 第三方回执调用接口,可根据业务场景执行
             * 注意:只能用下面回执对应的机型进行上报点击测试,其它机型获取不到 gttask 字段
             *
             * 60020 华为点击
             * 60030 oppo点击
             * 60040 vivo点击
             * 60070 荣耀点击
             *
             * 埋点接口对应填写获取到的actionid值,如果有获取到 actionid 值,就上报埋点,如 果没有则不用上报。
             *
             */
            if (gtaction != null) {
                int actionid = Integer.parseInt(gtaction);
                result = PushManager.getInstance().sendFeedbackMessage(context, taskid, messageid, actionid);
            }
        } catch (Exception e) {
            //…………
        }
        return result;
    }

注:1、个推sdk需要更新到2.14.0.0以上版本;2、vivo的intent长度限制1kb,intent拼接 actionid和taskid以后,会增加intent长度,这个可以根据业务场景适当调整参数内容长度,以免超限。

三、配置后报表数据预览

消息渠道 下发 到达 展示 点击
个推
华为 ×
荣耀 ×
小米
魅族
oppo ×
vivo
ups ×
开发者中心 SDK 下载

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询