1.说明
由于信鸽接入文档比较详细,这里我不对如何接入进行阐述,想知道具体如何接入可以参考信鸽帮助手册:信鸽Android快速接入,这里我只对如何控制收到推送通知点击后打开新面板回退时依然可以返回到用户指定的上一级面板,这里也是工作中碰到的一些问题进行存档。
2.注意
1、如果主应用已经被杀死并且不存在任何Activity后就无法跳到用户指定面板;
2、只有在主应用未被杀死的情况下可以跳到用户上次依然打开的面板;
3、如果主应用被杀死后点击通知栏依然可以重新启动主应用效果;
4、从信鸽的Service外部进程打开Activity必须指定FLAG_ACTIVITY_NEW_TASK标记;
5、我这里的主Activity主要做一些版本升级,门户校验之内就会进行关闭,不会有核心业务的处理。
3.代码片段
3.1.收到通知并点击的事件处理
@Override
public void onNotifactionClickedResult(Context context, XGPushClickedResult message) {
if (message.getCustomContent() == null) {
return;
}
Map<String, Object> map = BaseModel.parse(message.getCustomContent(), Map.class);
map = (Map<String, Object>) map.get("params");
String pushType = map.get("pushType").toString();
if (StringUtils.equalsIgnoreCase(pushType, "ORDER_DETAIL")) {
Double id = (Double)map.get("orderId");
Intent intent = new Intent(context, BookingOrderDetailActivity.class);
intent.putExtra("data", id.intValue());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
3.2.主入口Laucher被创建处理
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 判断是否从推送通知栏打开的
XGPushClickedResult click = XGPushManager.onActivityStarted(this);
if (click != null) {
//从推送通知栏打开-Service打开Activity会重新执行Laucher流程
//查看是不是全新打开的面板
if (isTaskRoot()) {
return;
}
//如果有面板存在则关闭当前的面板
finish();
}
}
4.最后
如果有疑问可以给我反馈,我会尽快回复大家,谢谢!