开发者社区> 问答> 正文

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

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

展开
收起
保持可爱mmm 2020-03-27 22:46:46 971 0
1 条回答
写回答
取消 提交回答
  • 打开指定Activity主要有两种方式。 2.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.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才行。

    2020-03-27 22:51:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载