友盟推送集合小米华为通道

前面怎么实现不赘述,照着下面链接的官方文档来就可以了
http://dev.umeng.com/sdk_integate/android_sdk/android_push_doc#5
写这篇博客的主要原因是,友盟的官方文档聚合小米华为推送中使用小米弹窗功能(使用华为弹窗同)时,很操蛋的只写了一半,如下图
这里写图片描述

只写了用handler发送信息,并没有说handler里是怎么处理的,最后我自己打印log,获取信息到信息看了下跟UMessage类是一样的就用gson将其转为UMessage对象,handler的处理的具体如下

public class MipushActivity extends UmengNotifyClickActivity {
    private static String TAG = MipushActivity.class.getName();
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler() {
        @Override
       public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Intent intent = new Intent(MipushActivity.this, SplashActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            addMessageToIntent(intent, (UMessage) msg.obj);
            Log.d("TEST", "uMessage:" + msg.obj.toString());
            startActivity(intent);
            finish();
        }
    };

    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        setContentView(R.layout.fragment_splash);
    }

    @Override
    public void onMessage(Intent intent) {
        super.onMessage(intent);  //此方法必须调用,否则无法统计打开数
        String body = intent.getStringExtra(AgooConstants.MESSAGE_BODY);
        UmLog.i(TAG, body);
        Log.d("TEST", "body:" + body);
        UMessage uMessage = new Gson().fromJson(body, UMessage.class);
        Message message = Message.obtain();
        message.obj = uMessage;
        handler.sendMessage(message);
    }

    /**
     * 用于将UMessage中自定义参数的值放到intent中传到SplashActivity中,SplashActivity中对友盟推送时自定义消息作了专门处理
     * @param intent 需要增加值得intent
     * @param msg    需要增加到intent中的msg
     */
    private void addMessageToIntent(Intent intent, UMessage msg) {

        if (intent == null || msg == null || msg.extra == null) {
            return;
        }

        for (Map.Entry<String, String> entry : msg.extra.entrySet()) {
            String key = entry.getKey();
            String value = entry.getValue();
            if (key != null) {
                intent.putExtra(key, value);
            }
        }

    }

}

注意不打算让该activity显示的话可以在AndroidManifest里配置theme
如下

<!--小米弹窗功能activity-->
        <activity android:name=".page.umeng.MipushActivity"
                  android:exported="true"
                  android:theme="@android:style/Theme.NoDisplay"
            />

为了防止部分系统出现配置时效,可以在此activity setContentView时将其布局设置的跟应用的首屏页面一样,一般应用首屏都是一张图片的,这样即使失效也只会以为是应用启动信息

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值