开发者社区> 问答> 正文

【移动推送】Android SDK中推送通知打开指定Activity时如何操作?

已解决

【移动推送】Android SDK中推送通知打开指定Activity时如何操作?

展开
收起
EMAS支持组 2022-09-15 15:12:11 619 0
1 条回答
写回答
取消 提交回答
  • 采纳回答

    打开指定Activity主要有两种方式。

    1、使用SDK打开Activity移动推送Android SDK是支持打开Activity功能的,此时只需要在推送时指定通知的打开方式即可。相关OpenApi代码可参考:

    PushRequest pushRequest = new PushRequest();
    // 其余设置省略...
    pushRequest.setPushType("NOTICE");
    pushRequest.setAndroidOpenType("ACTIVITY"); //点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
    pushRequest.setAndroidActivity("您需要打开的界面");
    

    2、 自行打开Activity如果SDK自带的打开activity功能无法满足您的需求,您可以在通知点击回调中自行完成activity跳转逻辑,可参考如下方案。首先,将通知点击动作设置为NONE:

    PushRequest pushRequest = new PushRequest();
    // 其余设置省略...
    pushRequest.setPushType("NOTICE");
    pushRequest.setAndroidOpenType("NONE"); //点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
    

    然后在通知点击回调onNotificationOpened中完成activity跳转逻辑:

     @Override
     public void onNotificationOpened(Context context, String title, String summary, String extraMap) {
     Log.e("MyMessageReceiver", "onNotificationOpened, title: " + title + ", summary: " + summary + ", extraMap:" + extraMap);
     ...
     Intent intent = new Intent(context,"您需要打开的界面");
     ....
     intent.putExtra("title",title);
     intent.putExtra("summary",summary);
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     context.startActivity(intent);
     }
    

    注意:由于BroadcastReceiver中获取到的Context不是ActivityContenxt而是ApplicationContext,所以无法直接打开activity,而需要将对应intent设置为Intent.FLAG_ACTIVITY_NEW_TASK才行。


    更多官方信息

    EMAS官网介绍:https://www.aliyun.com/product/emas

    Devops:https://www.aliyun.com/product/emascrash/mobile_devops

    移动热修复:https://www.aliyun.com/product/hotfix

    移动测试:https://www.aliyun.com/activity/emas/mqcexpert

    移动推送:https://www.aliyun.com/product/cps

    HTTPDNS:https://www.aliyun.com/product/httpdns

    EMAS 控制台: https://emas.console.aliyun.com/products

    2022-09-15 15:59:54
    赞同 展开评论 打赏
来源圈子
更多
收录在圈子:
基于阿里巴巴以及合作伙伴的最佳实践,围绕大前端、云原生领域的相关技术热点(小程序、Serverless、应用中间件、低代码、DevOps)展开行业探讨,与开发者一起探寻云原生时代应用研发的新范式。
问答排行榜
最热
最新

相关电子书

更多
从 SDK 到编解码:视频直播架构解析 立即下载
跨平台的云服务SDK需要什么 立即下载
一个跨平台的云服务SDK需要什么 立即下载