Android
gmubase.aar
中定义了框架推送协议AbstractPushManager.java
,对接三方推送SDK时需要新建一个管理类(独立的组件,依赖GMUBase和推送SDK)来实现该协议并在方法实现中调用三方SDK提供的方法。同时该管理类需要调用AbstractPushManager
类的public static void setPushManager(AbstractPushManager i)
方法将本类单例传递给AbstractPushManager
,App需要调用推送相关方法时通过AbstractPushManager
来调用到管理类,管理类调用到三方SDK:
新建一个管理类实现
AbstractPushManager
协议,并实现协议中的必选方法:
public void initPushService(Context context, int ResId) {
if(context != null) {
mContext = context.getApplicationContext();
JPushInterface.setDebugMode(true);
JPushInterface.init(mContext);
}
}
// ...管理类加载时设置管理类的单例到
AbstractPushManager
:public static HLJPUSHManager getInstance(){
if(mInstance==null){
mInstance = new HLJPUSHManager();
AbstractPushManager.setPushManager(mInstance);
}
return mInstance;
}调用
AbstractPushManager
实现调用推送SDK,以设置别名为例:AbstractPushManager.getInstance().setAlias(alias, new ITagAliasResultListene();
iOS
GMUBase.framework
中定义了框架推送协议HLPushManagerProtocol
,对接三方推送SDK时需要新建一个管理类(独立的组件,依赖GMUBase和推送SDK)来实现该协议并在方法实现中调用三方SDK提供的方法。同时该管理类需要调用HLPushManager
类的+[HLPushManager loadManagerImplClass:]
方法将本类单例传递给HLPushManager
,App需要调用推送相关方法时通过HLPushManager
来调用到管理类,管理类调用到三方SDK:
新建一个管理类实现
HLPushManagerProtocol
协议,并实现协议中的必选方法:@interface HLJiGuangPushManager () <HLPushManagerProtocol>
@end
@implementation HLJiGuangPushManager
+ (BOOL)isPushServiceAvailable
{
if (!_appKey) {
_appKey = [HLJiGuangPushManager getAppKey] ?: @"";
}
return _appKey.length;
}
// ...
@end管理类加载时设置管理类的单例到
HLPushManager
:@implementation HLJiGuangPushManager
+ (void)load
{
[HLPushManager loadManagerImplClass:self.sharedManager];
}
+ (instancetype)sharedManager
{
static HLJiGuangPushManager *_manager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_manager = [HLJiGuangPushManager new];
});
return _manager;
}
@end调用
HLPushManager
实现调用推送SDK:[HLPushManager setAlias:@"alias-light"];