普通推送结合辅助弹窗推送的场景,帮助您快速理解辅助弹窗功能的配置。
客户端配置
客户端有Main、Second两个Activity,MainActivity为App打开主页面,SecondActivity extends AndroidPopupActivity;
- 普通通知回调配置 - public class MyMessageReceiver extends MessageReceiver { /** * 推送通知的回调方法 * @param context * @param title * @param summary * @param extraMap */ @Override public void onNotification(Context context, String title, String summary, Map<String, String> extraMap) { Log.d(TAG, "Receive notification, title: " + title + ", content: " + summary + ", extraMap: " + extraMap); } }
- MainActivity定义: - package com.alibaba.push.testdemo; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { Log.d(TAG, "Main"); } }
- SecondActivity定义: - package com.alibaba.push.testdemo; import com.alibaba.sdk.android.push.AndroidPopupActivity; public class SecondActivity extends AndroidPopupActivity { /** * 辅助弹窗指定打开Activity回调 * @param title 标题 * @param content 内容 * @param extraMap 额外参数 */ @Override protected void onSysNoticeOpened(String title, String content, Map<String, String> extraMap) { Log.d(TAG, "Receive XiaoMi notification, title: " + title + ", content: " + content + ", extraMap: " + extraMap); } }
场景:普通推送+辅助弹窗
服务端配置
服务端配置如下:
PushRequest pushRequest = new PushRequest();
// 其余设置省略
// 通知
pushRequest.setPushType("NOTICE");
// 标题
pushRequest.setTitle("hello");
// 内容
pushRequest.setBody("PushRequest body");
// 点击通知后动作 "APPLICATION" : 打开应用 "ACTIVITY" : 打开AndroidActivity "URL" : 打开URL "NONE" : 无跳转
pushRequest.setAndroidOpenType("APPLICATION");
// 设定通知打开的activity,仅当AndroidOpenType="Activity"有效
pushRequest.setAndroidActivity("com.alibaba.push.testdemo.MainActivity"); 
// 设置辅助弹窗打开Activity
pushRequest.setAndroidPopupActivity("com.alibaba.push.testdemo.SecondActivity");
// 设置辅助弹窗通知标题
pushRequest.setAndroidPopupTitle("hello2");
// 设置辅助弹窗通知内容
pushRequest.setAndroidPopupBody("PushRequest body2");
// 设定android类型设备通知的扩展属性
pushRequest.setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}");推送结果
非厂商通道设备和在线设备:
- 收到普通推送通道弹出的通知,点击后打开App,进入首页MainActivity,如果设备在前台,保持当前界面不变; 
- onNotification()回调输出Receive notification, title: hello, content: PushRequest body, extraMap: {k1=android, k2=v2}; 
清理进程后的小米、华为等厂商通道设备:
- 厂商通道弹出通知,点击通知后跳转到SecondActivity; 
- onSysNoticeOpened()回调输出Receive XiaoMi notification, title: hello, content: PushRequest body, extraMap: {k1=android, k2=v2}; 
场景总结
服务端参数
- Title、Body、AndroidExtparameters全场景生效。 
- AndroidOpenType、AndroidActivity作用于在线设备和非小米、华为等厂商通道设备。 
- AndroidPopupTitle、AndroidPopupBody、AndroidPopupActivity仅作用于厂商通道。 
客户端数据接收
- 在线设备和非小米、华为等厂商通道设备,数据通过自定义接收器MessageReceiver接收数据。 
- 厂商通道,通过辅助弹窗AndroidPopupActivity接收数据。 
厂商通道送达的通知,通知中标题和内容是服务端设置的AndroidPopupTitle、AndroidPopupBody,点击通知唤起辅助弹窗AndroidPopupActivity,在onSysNoticeOpened中回调的是服务端设置的Title、Body、AndroidExtParameters。