Android 小米推送 点击通知栏消息无法拉起应用

首先参考地址:文档中心

2、打开当前app内任意一个Activity

调用Message.Builder类的extra(String key, String value)方法:

key - Constants.EXTRA_PARAM_NOTIFY_EFFECT, value - Constants.NOTIFY_ACTIVITY

key - Constants.EXTRA_PARAM_INTENT_URI, value - 启动Activity的intent uri

获取Intent uri的具体步骤:

在安卓客户端的工程的AndroidManifest.xml里定义一个Activity, 例如下面是一个展示新闻的Activity:

<activity android:name=".NewsActivity"/>

定义一个Intent来启动该Activity, 例如要打开上面定义的NewsActivity可定义Intent为:

intent:#Intent;component=com.yourpackage/.YourActivity;end

例如转换intent为uri:

String uriString = intent.toUri(Intent.URI_INTENT_SCHEME);//该uriString就是Constants.EXTRA_PARAM_INTENT_URI对应的值

返回值:

intent:#Intent;component=com.xiaomi.mipushdemo/.NewsActivity;end

注:

  • 如果你希望在Intent uri中携带数据,注意一个限制:Intent.toUri(Intent.URI_INTENT_SCHEME), 返回的结果不会携带除基本类型(boolean, byte, short, int, long, float, double, String)以外的数据类型, 例如数组和HashMap
  • 获取了Intent uri之后, 在服务端的工程里(需要引用推送服务器SDK), 把uriString 设置进的Message.Builder.extra(),对应的key是Constants.EXTRA_PARAM_INTENT_URI
  • 在生成intent uri时,如果出现点击无法跳转或者Activity的生命周期没有执行时,建议追加flag参数:intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)

Demo:

private Message buildMessage() throws Exception {
    String PACKAGENAME = "com.xiaomi.mipushdemo";
    String messagePayload = “This is a message”;
    String title = “notification title”;
    String description = “notification description”;
    return new Message.Builder()
            .title(title)
            .description(description).payload(messagePayload)
            .restrictedPackageName(MY_PACKAGE_NAME)
            .passThrough(0)  //消息使用通知栏方式
            .notifyType(1)
            .extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_ACTIVITY)
            .extra(Constants.EXTRA_PARAM_INTENT_URI, "intent:#Intent;component=com.xiaomi.mipushdemo/.NewsActivity;end")
            .build();
}

3、打开网页

调用Message.Builder类的extra(String key, String value)方法:

key -Constants.EXTRA_PARAM_NOTIFY_EFFECT, value - Constants.NOTIFY_WEB

key - Constants.EXTRA_PARAM_WEB_URI, value - 网页uri

Demo:

private Message buildMessage() throws Exception {
    String PACKAGENAME = "com.xiaomi.mipushdemo";
    String messagePayload = “This is a message”;
    String title = “notification title”;
    String description = “notification description”;
    Message message = new Message.Builder()
            .title(title)
            .description(description).payload(messagePayload)
            .restrictedPackageName(MY_PACKAGE_NAME)
            .passThrough(0)  //消息使用通知栏方式
            .notifyType(1)
            .extra(Constants.EXTRA_PARAM_NOTIFY_EFFECT, Constants.NOTIFY_WEB)
            .extra(Constants.EXTRA_PARAM_WEB_URI, "http://www.xiaomi.com")
            .build();
    return message;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值