MobPush 框架和 API

简介

MobPush 是 Mob 平台推出的一款推送 SDK。MobPush 支持 iOS 和 Android 两大平台,并且有 Cocoa2d,Unity3D,JavaScript 插件支持,并支持 Rest Api 轻松接入,集成更加方便简单快捷,且提供完整的可视化数据和强大的管理后台。

推送是 App 必不可少的功能,能有效提升用户留存率和活跃度,快速高效的为 App 集成 MobPush 推送服务,可应对多样化的推送场景。

本文主要介绍 MobPush For iOS。

主要功能

功能 详解
推送类型
支持通知栏通知和自定义消息
推送属性
可对通知和自定义通知进行定时发送
个性化推送
可根据标签、别名、Registration ID、地理位置精确推送
数据统计
用户量,推送数量,成功数量,点击数量,发送 API 调用数详细统计数据一览无余
API支持
提供简单接入的 Rest API 接口,方便开发者定制推送需求

推送流程

MobPush 提供两条通道:一条 APNs 通道,一条长连接通道。

MOBPush 推送流程

MobPush 框架和 API_第1张图片
image.png

上图可以看出:

  1. 当应用在前台时,走 MobPush 的长连接通道,MobPush 收到长连接,调用本地通知,达到和 APNs 相同的效果,大大增大了推送速度和成功率。
  2. 当应用在后台时,走 APNs 通道,MobPush 服务器直接发消息给 APNs 服务器。

上面的 APNs 推送流程,就是苹果的 APNs 流程,请看下图:

MobPush API

下面主要介绍 MobPush 的 API 和基本使用。

  1. MobPushDidReceiveMessageNotification

    /**
    收到消息通知(数据是MPushMessage对象,可能是推送数据、自定义消息数据,APNs、本地通知等的回调)
    */
    extern NSString *const MobPushDidReceiveMessageNotification;
    

    收到消息通知(数据是 MPushMessage 对象,可能是推送数据、自定义消息数据,APNs、本地通知等的回调),通过 NSNotificationCenter 监听这个通知,根据 MPushMessage 对象内的 messageType 判断当前收到的通知类型:自定义消息数据,APNs、本地通知。
    将所有的通知回调封装,统一用通知中心监听,大大的减少了代码量,方便开发者的接入,使开发者的接入门槛更低。
    举个例子:

    1. 第一步监听通知

      [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMessage:) name:MobPushDidReceiveMessageNotification object:nil];
      
    2. 第二步收到通知

    // 收到通知回调
    - (void)didReceiveMessage:(NSNotification *)notification
    {
    MPushMessage *message = notification.object;

         switch (message.messageType)
         {
             case MPushMessageTypeCustom:
             {// 自定义消息
                 
             }
                 break;
                 
             case MPushMessageTypeAPNs:
             {// APNs 回调
                 
             }
                 break;
                 
             case MPushMessageTypeLocal:
             {// 本地通知回调
                                     
             }
                 break;
                 
             default:
                 break;
         }
     }
     ```
    
    1. 第三步在 dealloc 移除通知

      - (void)dealloc
      {
          [[NSNotificationCenter defaultCenter] removeObserver:self];
      }
      
  1. setAPNsForProduction

    /**
     设置推送环境
    
     @param isProduction 是否生产环境。 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES。 Default 为 YES 生产状态
     */
    + (void)setAPNsForProduction:(BOOL)isProduction;
    

    设置推送环境,设置当前推送的环境是否为生产环境, 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES。 默认为 YES 生产状态。这行代码写在 didFinishLaunchingWithOptions,告诉 MobPush 服务器,将要在哪个环境进行推送。

    举个例子:

// 设置推送环境

ifdef DEBUG

[MobPush setAPNsForProduction:NO];

else

[MobPush setAPNsForProduction:YES];

endif

```

通常我们都是 DEBUG 模式下设置开发状态,Release 模式下设置生产状态。
  1. setupNotification

    /**
     设置推送配置
    
     @param configuration 配置信息
     */
    + (void)setupNotification:(MPushNotificationConfiguration *)configuration;
    

    设置推送配置,这里主要设置推送的一些配置参数,你可以设置在任何地方。

    举个例子:

    //MobPush推送设置(获得角标、声音、弹框提醒权限)
    MPushNotificationConfiguration *configuration = [[MPushNotificationConfiguration alloc] init];
    configuration.types = MPushAuthorizationOptionsBadge | MPushAuthorizationOptionsSound | MPushAuthorizationOptionsAlert;
    [MobPush setupNotification:configuration];
    

    上面的代码就是最基本的配置,设置推送的角标、声音、弹框提醒权限。

  2. addLocalNotification

    /**
     添加本地推送通知
    
     @param message 消息数据
     */
    + (void)addLocalNotification:(MPushMessage *)message;
    

    添加本地推送通知,可以定制本地通知的内容,标题,子标题,声音,角标,什么时间触发等等。

    举个例子:

    MPushMessage *message = [[MPushMessage alloc] init];
    message.messageType = MPushMessageTypeLocal;
    MPushNotification *noti = [[MPushNotification alloc] init];
    noti.body = @"推送内容";
    noti.title = @"标题";
    noti.subTitle = @"子标题";
    noti.sound = @"unbelievable.caf";
    noti.badge = 999;
    message.notification = noti;
    
    NSDate *currentDate = [NSDate dateWithTimeIntervalSinceNow:0];
    NSTimeInterval nowtime = [currentDate timeIntervalSince1970] * 1000;
    
    //设置立即触发
    //message.isInstantMessage = YES;
    
    //设置几分钟后发起本地推送
    NSTimeInterval taskDate = nowtime + self.timeValue*60*1000;
    message.taskDate = taskDate;
    [MobPush addLocalNotification:message];
    
  3. addTags

    /**
     添加标签
    
     @param tags 标签组
     @param handler 结果
     */
    + (void)addTags:(NSArray *)tags result:(void (^) (NSError *error))handler;
    

    添加标签,可以添加多个,不覆盖,标签:给用户分组的作用,比如一个新闻类 App,用户喜欢体育、科技。给用户添加体育、科技的标签,当有体育和科技的文章,就可以推送给该用户。

    举个例子:

    [MobPush addTags:@[@"体育", @"科技"] result:^(NSError *error) {
        
    }];
    
  4. getTagsWithResult

    /**
     获取所有标签
    
     @param handler 结果
     */
    + (void)getTagsWithResult:(void (^) (NSArray *tags, NSError *error))handler;
    

    获取所有已添加的标签列表

    举个例子:

    [MobPush getTagsWithResult:^(NSArray *tags, NSError *error) {
        NSLog(@"%@", tags);
    }];
    
  5. deleteTags

    /**
     删除标签
    
     @param tags 需要删除的标签
     @param handler 结果
     */
    + (void)deleteTags:(NSArray *)tags result:(void (^) (NSError *error))handler;
    

    删除标签,删除指定的标签

    举个例子:

    [MobPush deleteTags:@"体育" result:^(NSError *error) {
            
    }];
    
  6. cleanAllTags

    /**
     清空所有标签
    
     @param handler 结果
     */
    + (void)cleanAllTags:(void (^) (NSError *error))handler;
    

    清空所有标签

    举个例子:

    [MobPush cleanAllTags:^(NSError *error) {
        
    }];
    
  7. setAlias

    /**
     设置别名
    
     @param alias 别名
     @param handler 结果
     */
    + (void)setAlias:(NSString *)alias result:(void (^) (NSError *error))handler;
    

    设置别名,别名唯一,会覆盖,一般用作指定用户,可以将 userId 设置为别名。

    举个例子:

    [MobPush setAlias:@"userId" result:^(NSError *error) {
        
    }];
    
  8. getAliasWithResult

    /**
     获取别名
    
     @param handler 结果
     */
    + (void)getAliasWithResult:(void (^) (NSString *alias, NSError *error))handler;
    

    获取别名,获取已设置的别名。

    举个例子:

    [MobPush getAliasWithResult:^(NSString *alias, NSError *error) {
        NSLog(@"%@", alias);
    }];
    
  9. deleteAlias

    /**
     删除别名
    
     @param handler 结果
     */
    + (void)deleteAlias:(void (^) (NSError *error))handler;
    

    删除别名,别名唯一,所有无需指定,直接删除。

    举个例子:

    [MobPush deleteAlias:^(NSError *error) {
        
    }];
    
  10. getRegistrationID

    /**
     获取注册id(可与用户id绑定,实现向指定用户推送消息)
    
     @param handler 结果
     */
    + (void)getRegistrationID:(void(^)(NSString *registrationID, NSError *error))handler;
    

    获取注册id,可与用户id绑定,实现向指定用户推送消息。

    举个例子:

    [MobPush getRegistrationID:^(NSString *registrationID, NSError *error) {
        NSLog(@"%@", registrationID);
    }];
    
  11. setBadge

    /**
     设置角标值到Mob服务器
     本地先调用setApplicationIconBadgeNumber函数来显示角标,再将该角标值同步到Mob服务器,
     @param badge 新的角标值(会覆盖服务器上保存的值)
     */
    + (void)setBadge:(NSInteger)badge;
    

    设置角标值到 Mob 服务器,同步角标

    举个例子:

    [MobPush setBadge:99];
    
  12. clearBadge

    /**
     清除角标,但不清空通知栏消息
     */
    + (void)clearBadge;
    

    清除角标,但不清空通知栏消息。

    举个例子:

    [MobPush clearBadge];
    

你可能感兴趣的:(MobPush 框架和 API)