android7 推送服务,Android 接入

1.依赖

在当前工程的 build.gradle 文件中添加依赖

compile('com.taobao.android:orange:2.0.1-emas')

2.Service声明

AndroidManifest.xml中加入下面代码

android:name="com.taobao.orange.service.OrangeApiService"

android:exported="false">

3.初始化

该方法需要尽可能早的调用, 以便尽可能早从本地缓存或者服务端拿到最新配置

OConfigconfig=newOConfig.Builder()

.setAppKey(StringappKey)//必选

.setAppSecret(StringappSecret)//必选

.setAppVersion(StringappVersion)//必选, 当前应用版本号

.build();

OrangeConfig.getInstance().init(Contextcontext,OConfigconfig);

4.检查更新

检查服务端是否有更新, 建议前台后切换进行检查, 防止过度轮询导致不必要的资源浪费, SDK内部强制限制20s之内不能连续检查更新

OrangeConfig.getInstance().forceCheckUpdate();

5.添加自定义条件

第一次添加自定义条件必须确保在init()接口调用之前, 后续更新自定义条件则不限制调用时机, 以达到动态匹配条件的目的

Stringkey="${customer_key}";//自定义key

Stringvalue="${customer_value}";//自定义value

OrangeConfig.getInstance().addCandidate(newOCandidate(key,value));

6.获取配置配置类型, 根据值类型不同, 分为STANDARD和CUSTOM两种类型

STANDARD类型: key-value形式

CUSTOM类型: string形式

配置级别, 为了减轻服务端压力, 分为DEFAULT和HIGH两种级别

HIGH级别: 首次启动应用时SDK默认只会拉取HIGH级别的配置

DEFAULT级别: 首次启动应用时不会主动拉取DEFAULT级别的配置,只有业务方手动调用以下getConfig/getConfigs/getCustomConfig接口才会触发SDK拉取

获取配置, 通过以下异步接口获取

//OrangeConfig.getInstance()获取单例对象

//STANDARD类型namespace配置key对应value, 如果不存在或者还未从文件中反序列化完成返回defaultVal

StringgetConfig(Stringnamespace,Stringkey,StringdefaultVal);

//STANDARD类型namespace配置所有key的键值对

MapgetConfigs(Stringnamespace);

//CUSTOM类型namespace配置的值, 如果不存在或者还未从文件中反序列化完成返回defaultVal

StringgetCustomConfig(Stringnamespace,StringdefaultVal)

监听配置更新, 由上可知获取配置接口都是异步的, 并不能保证获取的就是文件中序列化的值或者是服务端最新下发的值, 所以为了及时感知配置变更, 需要注册配置监听接口

//OrangeConfig.getInstance()获取单例对象

//注册namespace配置的listener监听器

voidregisterListener(String[]namespaces,OConfigListenerlistener);

//去注册namespace配置的listener监听器

voidunregisterListener(String[]namespaces,OConfigListenerlistener);

//注销namespaces配置组的所有监听器

voidunregisterListener(String[]namespaces);

同一个namespace最多支持只10个监听器对象, 后续如果又添加一个监听器对象会覆盖最旧的监听器对象, 以此类推, 不需要监听配置更新之后, 最好务必去注册该监听器, 防止潜在的OOM

publicinterfaceOConfigListener{

//namespace:配置组名称 args:可变参数(可拓展), 当前存在两个key,

//1. fromCache->配置缓存读取(true)or服务端下发最新(false)

//2. configVersion->当前配置版本号

voidonConfigUpdate(Stringnamespace,Mapargs);

}

7、接入主动推送配置能力(如有)

(1)在AndroidMenfest.xml文件中声明OrangeAccsService

android:name="com.taobao.orange.accssupport.OrangeAccsService"

android:exported="false">

(2)通道服务初始化代码中绑定OrangeAccsService, 即在IAppReceiver的getService接口实现中加入远程配置的Service

put("orange","com.taobao.orange.accssupport.OrangeAccsService");

IAppReceiver实现示例

privateIAppReceivermAppReceiver=newIAppReceiver(){

privateStringTAG="mAppReceiver";

...

...

@Override

publicStringgetService(StringserviceId){

Stringservice=SERVICES.get(serviceId);

returnservice;

}

@Override

publicMapgetAllServices(){

returnSERVICES;

}

};

最佳实践classA{

privateOConfigListenerlistener=newOConfigListener(){

@Override

publicvoidonConfigUpdate(Stringnamespace,Mapargs){

if("test_namespace".equals(namespace)){

value=OrangeConfig.getInstance().getConfig("test_namespace","test_key","default");

}

}

};

privateStringvalue=initValue();

privateStringinitValue(){

OrangeConfig.getInstance().registerListener(newString[]{"test_namespace"},listener);

returnOrangeConfig.getInstance().getConfig("test_namespace","test_key","default");

}

publicStringgetValue(){

returnvalue;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值