MobPush iOS SDK API

概述

MobPush 注册推送,获取推送id等方法均可在SDK的"MobPush.h"中进行查看,也可以下载MobPush的Demo进行参考。

推送环境设置(setAPNsForProduction)

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

示例代码

// 设置推送环境
#ifdef DEBUG

    [MobPush setAPNsForProduction:NO];

#else

    [MobPush setAPNsForProduction:YES];

#endif

注册推送配置(setupNotification)

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

示例代码

//MobPush推送设置(获得角标、声音、弹框提醒权限),应用要收到推送(角标、声音、弹框提醒)需要先申请权限,这个方法就是设置推送配置、申请权限的方法。用法可参考以下的例子。

MPushNotificationConfiguration *configuration = [[MPushNotificationConfiguration alloc] init];

configuration.types = MPushAuthorizationOptionsBadge | MPushAuthorizationOptionsSound | MPushAuthorizationOptionsAlert;

[MobPush setupNotification:configuration];

通知回调接口(MobPushDidReceiveMessageNotification)

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

说明:应用收到消息,MobPush会发起一个通知,开发者只需要建立一个通知收听 MobPushDidReceiveMessageNotification 并作相应处理即可。收到的数据是一个MPushMessage对象,可能是推送数据,也可能是自定义消息数据。如果是推送数据,开发者可以通过MobPush.h中的addLocalNotification:方法,让消息以本地通知形式显示(iOS 10之前的系统应用内是不会显示通知的)。

示例代码

// 注册通知回调
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didReceiveMessage:) name:MobPushDidReceiveMessageNotification object:nil];

//查看通知参数可以打印notification
- (void)didReceiveMessage:(NSNotification *)notification{}

获取推送RegistrationID (getRegistrationID)

获取推送RegistrationID接口,RegistrationID可与用户id绑定,实现向指定用户推送消息,此接口必须在推送设置接口之后调用。

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

 @param handler 结果
 */
+ (void)getRegistrationID:(void(^)(NSString *registrationID, NSError *error))handler;

示例代码

[MobPush getRegistrationID:^(NSString *registrationID, NSError *error) {

 NSLog(@"registrationID = %@--error = %@", registrationID, error);

}];

推送标签API(addTags)

MobPush支持根据标签进行推送,所以也提供了对标签的相应操作。

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

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

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

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

示例代码

[MobPush getTagsWithResult:^(NSArray *tags, NSError *error) {};

[MobPush addTags:[self tags] result:^(NSError *error) {};

[MobPush deleteTags:[self tags] result:^(NSError *error) {};

[MobPush cleanAllTags:^(NSError *error) {};

推送别名API(setAlias)

MobPush同样支持根据别名推送,所以也提供了对别名的相应操作。

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

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

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

示例代码

[MobPush getAliasWithResult:^(NSString *alias, NSError *error) {

};

[MobPush deleteAlias:^(NSError *error) {

};

[MobPush setAlias:@"alias" result:^(NSError *error) {
  }];

添加本地推送接口(addLocalNotification)

/**
 添加本地推送通知
 @param request 消息请求(消息标识、消息具体信息、触发方式)
 @param handler 结果,iOS10以上成功result为UNNotificationRequest对象、iOS10以下成功result为UILocalNotification对象,失败result为nil
*/
+ (void)addLocalNotification:(MPushNotificationRequest *)request result:(void (^) (id result, NSError *error))handler;

示例代码

#import <MobPush/MobPush.h>
[MobPush addLocalNotification:request result:^(id result, NSError *error) {};

设置角标(setBadge)

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

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

示例代码

[MobPush setBadge:8];

[MobPush clearBadge];

打开和关闭远程推送(stopPush)

/**
 关闭远程推送(应用内推送和本地通知不受影响,只关闭远程推送)
 */
+ (void)stopPush;

/**
 打开远程推送
 */
+ (void)restartPush;

示例代码

[MobPush stopPush];

[MobPush restartPush];

应用处于前台时设置推送消息的提示类型(setAPNsShowForegroundType)

/**
 设置应用在前台有 Badge、Sound、Alert 三种类型,默认3个选项都有,iOS 10 以后设置有效。
 如果不想前台有 Badge、Sound、Alert,设置 MPushAuthorizationOptionsNone
 @param type 类型
 */
+ (void)setAPNsShowForegroundType:(MPushAuthorizationOptions)type;

示例代码

//设置后,应用在前台时不展示通知横幅、角标、声音。(iOS 10 以后有效,iOS 10 以前本来就不展示)
[MobPush setAPNsShowForegroundType:MPushAuthorizationOptionsNone];

指定删除收到的本地推送(removeNotificationWithIdentifiers)

/**
 删除指定的推送通知(可以删除未发送或者已经发送的本地通知)
 @param identifiers 推送请求标识数组,为nil,删除所有通知
 */
+ (void)removeNotificationWithIdentifiers:(NSArray <NSString *> *)identifiers;

示例代码

[MobPush removeNotificationWithIdentifiers:nil];

推送打开指定应用内指定页面(initWithMobPushScene)

后台配置

如果开发者想要对通知消息进行点击跳转到app内指定页面的操作,可以在开发者管理后台打开配置开关和参数设置。

Scheme地址:为开发者自定义的控制器路径。

传递参数:为跳转控制器的初始化参数。

代码配置

开发者需要在自己的应用内对所跳转的控制器进行相关代码设置。如下:(可参照demo中PushViewController.m) 参考链接(可参考示例代码也可以参考链接去设置): https://www.jianshu.com/p/9abb125b5456

/**
 设置控制器路径
 @return 控制器路径
 */
+ (NSString *)MobPushPath;

/**
 初始化场景参数

 @param params 场景参数
 @return 控制器对象
 */
- (instancetype)initWithMobPushScene:(NSDictionary*)params;

示例代码

#import <MobPush/UIViewController+MobPush.h>

// 还原标识ios可以自定义在对应vc中实现如下还原代码
+ (NSString *)MobPushPath
{
    return @"mlink://com.mob.mobpush.link";
}

//点击推送场景还原页面参数
- (instancetype)initWithMobPushScene:(NSDictionary *)params
{
    if (self = [super init])
    {

    }
    return self;
}

富媒体推送使用(MobPushServiceExtension)

添加 MobPushServiceExtension 依赖库

设置 Notification Service 最低运行版本为 10.0:

开启富媒体地址Http访问支持

使用 MobPushServiceExtension 进行富媒体推送

在 NotificationService.m 文件中,导入 MobPushServiceExtension 的头文件:

#import <MobPushServiceExtension/MobPushServiceExtension.h>

进入MobPush开发者后台通过url(带有后缀格式的文件地址)或者文件的方式发送富媒体通知。(必须勾选mutable-content选项)

调用handelNotificationServiceRequestUrl方法。接收到 APNs 通知后,SDK 判断是否有富媒体资源request.content.userInfo[@“attachment”],如果富媒体资源存在则SDK下载资源,下载完成后以 Block 方式回调返回 attachments 资源数组对象和error错误信息。

示例代码

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {

self.contentHandler = contentHandler;

self.bestAttemptContent = [request.content mutableCopy];

#pragma mark ----将APNs信息交由MobPush处理----

NSString * attachUrl = request.content.userInfo[@“attachment”];

[MobPushServiceExtension handelNotificationServiceRequestUrl:attachUrl withAttachmentsComplete:^(NSArray *attachments, NSError *error) {

if (attachments.count > 0) {

self.bestAttemptContent.attachments = attachments; self.contentHandler(self.bestAttemptContent);

        }else
       {
 self.contentHandler(self.bestAttemptContent);

        }

    }];
}

多媒体大小限制

自定义推送声音

将声音文件拖入到项目中,在MobPush后台或者接口传入对应声音文件名称即可

iOS送达统计

开发者可使用MobPushServiceExtension SDK上报APNs信息的到达状态。

集成方法:

  1. 1.将*_MobPushServiceExtension *_SDK引入到您创建好的Service Extension工程中
  2. 2.在方法 didReceiveNotificationRequest:withContentHandler:方法中调用deliverNotificationRequest:MobAppSecret:with:方法,以上报接收到的APNs消息,在该方法的block回调中进行APNs消息的显示
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler
{
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];

    __weak typeof(self) weakSelf = self;
    [MobPushServiceExtension deliverNotificationRequest:request MobAppSecret:@"appSecret" with:^{
        weakSelf.contentHandler(weakSelf.bestAttemptContent);
    }];
}

MobTech袤博(www.mob.com)是全球领先的数据智能科技平台。自2012年成立以来,旗下MobTech开发者服务依...

128 声望
12 粉丝
0 条评论
推荐阅读
MobTech MobPush|统一推送联盟烂尾,统一推送还能实现吗
统一推送联盟(Unified Push Alliance)是Android(安卓)平台下的移动应用信息推送技术联盟,以改善Android系统用户的推送服务体验。该联盟由工业和信息化部旗下中国泰尔实验室牵头成立于2017年10月,挂靠电信终...

MobTech袤博阅读 158

网易云音乐开源全链路埋点方案-曙光埋点(dawn)
网易云音乐开源了曙光埋点 dawn,一个跨多端的全链路埋点解决方案,旨在构造一个完美的数据理想国。曙光埋点创造性的提出了埋点虚拟树(VTree),并在此基础上实现了诸多能力,解决大前端侧埋点困难、精度差、不...

云音乐技术团队3阅读 2.5k

封面图
深度剖析 Runtime
做很多需求或者是技术细节验证的时候会用到 Runtime 技术,用了挺久的了,本文就写一些场景和源码分析相关的文章。先问几个小问题:class_rw_t的结构是数组,数组里面的元素是数组,那它是二维数组吗?为什么16字...

杭城小刘4阅读 1.2k

封面图
Mac下编译WebRTC(Mac和iOS版本)
随着新冠疫情的影响,这两年音视频的需求呈爆发式增长。在音视频领域中,WebRTC可以说是一个绕不开宝库,包括了音视频采集、编解码、传输、渲染的全过程。本文主要记录下在Mac平台上编译WebRTC Mac和iOS版本的全...

吴尼玛阅读 3.8k

抢鲜解读:Flutter 3.7更新啦
新年伊始,由 Flutter 3.7 正式版来「打头阵」!我们与整个 Flutter 社区们继续在 Flutter 3.7 中优化了框架,包括创建自定义菜单栏和层叠式菜单、更好的国际化工具支持、新的调试工具以及其他功能和特性等。

慕课网阅读 2.5k

封面图
OpenTranslator:一款基于ChatGPT API的翻译神器
这是一款使用 ChatGPT API 进行划词翻译和文本润色的浏览器插件。借助了 ChatGPT 强大的翻译能力,它将帮助您更流畅地阅读外语和编辑外语。

听蝉阅读 2.5k

Flutter中如何取消任务
在开发过程中,取消需求是很常见的,但很容易被忽略。然而,取消需求的好处也很大。例如,在页面中会发送很多请求。如果页面被切走并处于不可见状态,就需要取消未完成的请求任务。如果未及时取消,则可能会导致...

听蝉阅读 2.4k

MobTech袤博(www.mob.com)是全球领先的数据智能科技平台。自2012年成立以来,旗下MobTech开发者服务依...

128 声望
12 粉丝
宣传栏