Reference
在控制台创建 app
导入 PushSDK
1、工程添加仓库:
|
|
2、app 添加依赖:
|
|
3、如果运行时报错:
Program type already present: com.alibaba.sdk.android.utils.AMSDevReporter
Message{kind=ERROR, text=Program type already present: com.alibaba.sdk.android.utils.AMSDevReporter, sources=[Unknown source file], tool name=Optional.of(D8)}
说明存在 jar 包冲突,即引用了同一 jar 包的不同版本,解决方法是去掉其中一个 jar 包的引用,比如:
|
|
初始化 PushSDK
修改 Application:
|
|
统计应用启动数据
修改 BaseActivity:
|
|
如果不调用此方法,不仅会导致按照“几天不活跃”条件来推送失效,还将导致广播发送不成功以及设备描述红色等问题发生。
混淆配置
|
|
功能集成
设置通知点击后的行为
修改 Application:
|
|
设置是否展示通知
修改 Application:
|
|
设置通知免打扰时间段
默认是 23:00~7:00。
修改 Application:
|
|
设置通知冷却时间
默认是 60 秒。
修改 Application:
|
|
设置合并通知数
可以设置为 0~10 之间任意整数,默认是 1。
1、修改 Application:
|
|
2、效果
自定义通知栏图标
- 如果在发送后台没有指定通知栏图标,SDK 将使用本地的默认图标,其中,大图标默认使用 drawable 下的 umeng_push_notification_default_large_icon,小图标默认使用 drawable 下的 umeng_push_notification_default_small_icon。
若开发者没有设置这两个图标,则默认使用应用的图标(<application android:icon=”@mipmap/ic_launcher”></application>)。若开发者在发送后台指定了图片的链接,则该链接将通过 Message 的 img 字段进行传输。当 SDK 接受到消息后,会先下载图片,下载成功后显示通知;若下载失败,会自动重试两次(总共下载 3 次);若仍失败,则采用默认图片进行显示。如果使用 API 方式来发送消息, 可以指定 icon 和 largeIcon 字段,分别对应状态栏图标和通知栏下拉之后左侧大图标 id([R.drawable].icon), 请填写对应图片文件名,不包含扩展名。MIUI 暂时无法支持自定义通知栏图标,若开发者有需求,也可通过自定义通知栏样式来解决。
小图标 smallIcon:要求为 48*48 像素,图片各边至少留 1 个像素的透明,图标主体使用颜色,背景均使用透明。
- 大图标 largeIcon:要求为 64*64 像素。
- 对于超高分辨率的机型的适配,可以适当提高图标的尺寸。
自定义通知栏样式
1、新建布局 notification.xml:
|
|
2、修改 Application:
|
|
3、效果
设置通知到达时响铃、震动、呼吸灯策略
- MsgConstant.NOTIFICATION_PLAY_SERVER:通过服务端推送状态来设置客户端响铃、震动、呼吸灯的状态。
- MsgConstant.NOTIFICATION_PLAY_SDK_ENABLE:不关心服务端推送状态,客户端都会响铃、震动、呼吸灯亮。
- MsgConstant.NOTIFICATION_PLAY_SDK_DISABLE:不关心服务端推送状态,客户端不会响铃、震动、呼吸灯亮。
修改 Application:
|
|
自定义通知栏声音
TODO 适配 8.0+。
- 如果在发送后台没有指定通知栏的声音,SDK 将采用本地默认的声音,即 res/raw/umeng_push_notification_default_sound。若无此文件,则默认使用系统的 Notification 声音。
- 若需要在线配置声音,则需先将与配置的声音文件放置在 res/raw 下,然后自发送后台指定声音的 id,即 R.raw.[sound] 里的 sound。
设置应用在前台时是否显示通知
修改 Application:
|
|
自定义消息
自定义消息的内容存放在 UMessage.custom 字段里。
修改 Application:
|
|
设置用户标签(Tag)
方便推送时按标签过滤。
添加标签
1、修改 Application:
|
|
2、断点查看:
3、添加完成后,如果之前没有用户添加过该标签,现在就可以从控制台可以看到该标签并可以按该标签推送了:
获取服务器端的所有标签
1、修改 Application:
|
|
2、断点查看:
删除标签
1、修改 Application:
|
|
2、断点查看:
设置用户加权标签(Weighted Tag)
TODO 该功能尚未开通。
添加加权标签
1、修改 Application:
|
|
2、断点查看:
获取服务器端的所有加权标签
删除加权标签
设置用户别名(Alias)
如果你的应用有自有的用户 id 体系,可以 在SDK 中通过 Alias 字段上传自有用户 id,按用户 id 向用户推送消息。
方便推送时按别名过滤(单点推送)。
添加用户别名
1、修改 Application:
|
|
2、断点查看:
删除用户别名
1、修改 Application:
|
|
2、断点查看:
自定义参数
SDK 回调
getNotification(Context context, UMessage msg)
通知展示到通知栏时触发。
1、修改 Application:
|
|
2、Logcat 查看:
dealWithCustomAction(Context context, UMessage msg)
通知被点击时触发。
修改 Application:
|
|
Intent 回调
1、修改 Activity:
|
|
2、修改 Activity 启动方式为 singleTask。
3、断点查看:
自定义资源包名
修改 Application:
|
|
关闭推送
不能在刚刚注册后开启或关闭推送。
1、修改 Application:
|
|
2、断点查看:
开启推送
不能在刚刚注册后开启或关闭推送。
1、修改 Application:
|
|
2、断点查看:
支持多包名
若一个 APP 针对不同渠道有不同的包名,则可通过开通多包名支持一个 AppKey 对应多个包名发送消息。
如果同一设备安装同一应用的不同包名的多个安装包,只有最后安装的应用可以正常收到推送消息。
完全自定义处理(透传)
TODO 未实现。
使用完全自定义处理后,PushSDK 只负责下发消息体且只统计送达数,展示逻辑需由开发者自己写代码实现,点击数和忽略数需由开发者调用 UTrack 类的 trackMsgClick 和 trackMsgDismissed 方法进行统计。
应用内消息
全屏消息
TODO 未实现。
Activity 需要继承 UmengSplashMessageActivity,而不是实现某个接口。
插屏消息
TODO 未实现。
自定义插屏
TODO 未实现。
纯文本
TODO 未实现。