对接三方推送

Android

gmubase.aar中定义了框架推送协议AbstractPushManager.java,对接三方推送SDK时需要新建一个管理类(独立的组件,依赖GMUBase和推送SDK)来实现该协议并在方法实现中调用三方SDK提供的方法。同时该管理类需要调用AbstractPushManager类的public static void setPushManager(AbstractPushManager i)方法将本类单例传递给AbstractPushManager,App需要调用推送相关方法时通过AbstractPushManager来调用到管理类,管理类调用到三方SDK:

  1. 新建一个管理类实现AbstractPushManager协议,并实现协议中的必选方法:

    @Override
    public void initPushService(Context context, int ResId) {
    if(context != null) {
    mContext = context.getApplicationContext();
    JPushInterface.setDebugMode(true);
    JPushInterface.init(mContext);
    }
    }
    // ...
  2. 管理类加载时设置管理类的单例到AbstractPushManager

    public static HLJPUSHManager getInstance(){
    if(mInstance==null){
    mInstance = new HLJPUSHManager();
    AbstractPushManager.setPushManager(mInstance);
    }
    return mInstance;
    }
  3. 调用AbstractPushManager实现调用推送SDK,以设置别名为例:

    AbstractPushManager.getInstance().setAlias(alias, new ITagAliasResultListene();

iOS

GMUBase.framework中定义了框架推送协议HLPushManagerProtocol,对接三方推送SDK时需要新建一个管理类(独立的组件,依赖GMUBase和推送SDK)来实现该协议并在方法实现中调用三方SDK提供的方法。同时该管理类需要调用HLPushManager类的+[HLPushManager loadManagerImplClass:]方法将本类单例传递给HLPushManager,App需要调用推送相关方法时通过HLPushManager来调用到管理类,管理类调用到三方SDK:

  1. 新建一个管理类实现HLPushManagerProtocol协议,并实现协议中的必选方法:

    @interface HLJiGuangPushManager () <HLPushManagerProtocol>

    @end

    @implementation HLJiGuangPushManager

    + (BOOL)isPushServiceAvailable
    {
    if (!_appKey) {
    _appKey = [HLJiGuangPushManager getAppKey] ?: @"";
    }
    return _appKey.length;
    }

    // ...

    @end
  2. 管理类加载时设置管理类的单例到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
  3. 调用HLPushManager实现调用推送SDK:

    [HLPushManager setAlias:@"alias-light"];