安卓手机推送设置指导。
纵览国内安卓大环境,各大手机厂商为了限制应用后台行为,都加入了自己的权限控制系统。如果想让应用在后台正常收到消息推送,不同手机需要用户开启的权限也各不相同。为了解决以上问题,应用一般会在启动时引导用户进行权限配置,然而对各手机进行差异化配置是个特别琐碎且庞大的任务。为了节约各应用的开发成本,本着开源共享的精神,我们抽象出了该推送设置权限引导组件。
api project(':pushpermission')
RongPushPremissionsCheckHelper.checkPermissionsAndShowDialog(Activity, new ResultCallback() {
@Override
public void onAreadlyOpened(String value) {
}
@Override
public boolean onBeforeShowDialog(String value) {
return false;
}
@Override
public void onGoToSetting(String value) {
}
@Override
public void onFailed(String value, FailedType type) {
}
});
RongPushPremissionsCheckHelper 类是主要的对外功能方法类。
ResultCallback 为回调接口, 可在 onBeforeShowDialog 方法中,在弹窗之前进行拦截操作。在此方法中可用于设置自己的弹窗机制。
具体的方法介绍可参考 doc 文件夹中的 API 文档 。
组件中对三种权限进行检测并提示跳转。
主要分为三部分:
检查权限状态
权限设置页面跳转 Intent
此配置文件是为了配置机型进行保活所需权限的权限设置界面的跳转信息配置。
由于手机系统对保活的限制,需要开启某些特定的权限,并且某些手机所需的权限不一致。
所以在此页面进行配置以起到灵活适配的目的。
具体的信息配置规则如下,以小米为例:
<XIAOMI>
<AutoStart>
<IntentInfo>
<Package></Package>
<Clazz></Clazz>
<Action></Action>
<Data>
<Key></Key>
<Value></Value>
</Data>
<Extra>
<Key></Key>
<Value></Value>
</Extra>
<SetPath></SetPath>
</IntentInfo>
</AutoStart>
<Notification> ... </Notification>
<Clean> ... </Clean>
</XIAOMI>
标签 XIAOMI : 为手机的 Build.MANUFACTURER 字段的值。 当前为小米手机的 MANUFACTURER 值 (不区分大小写)。 不可为其他的,
否则找到不到设置的机型。
标签 AutoStart : 为自启动权限的配置。
标签 Notification : 为通知权限的配置。
标签 Clean : 为锁屏清理权限的配置。
后续如果需要添加别的权限跳转设置, 则会增加其他标签。
标签 IntentInfo : 为跳转中所要用到的的信息。 其中包括 package , class, action 跳转中所需要的值。
标签 Data: intent 跳转所需的 data 数据。 有 Key 和 Value. 当 Value 值为 auto 的时候,则有代码内部自动获取值。
标签 Extra: intent 跳转所需的 Extra 数据。有 Key 和 Value. 当 Value 值为 auto 的时候,则有代码内部自动获取值。
标签 SetPath: 设置的界面路径
每个权限标签下可配置多个 IntentInfo。 这是为了兼容机型(因为有可能有的机型有,有的机型没有)。代码会全部解析出来,
并去检测配置的组件信息是否存在。如果存在则会直接使用当前的。后面的则不会再去验证。 如果没有再会再尝试下面的配置,
直到结束。所以,当有多个 IntentInfo 的时候, 建议把配置多的,优先的配置到前面,以提高检测效率。
对外使用部分
由于 Android 机型重多,希望更多的人加入我们,一起完善此组件, 适配组件尚未适配的机型。
具体的适配方法, 即在 config.xml 文件中按照规则配置即可。
您也可进行留言,为我们提供您宝贵的建议。