iOS SDK配置__iOS SDK手册_App SDK 手册_移动推送-阿里云
- 使用前必读:移动推送名词解释&约束
1. 创建应用
到阿里云移动推送控制台创建应用,应用创建完成后,进入移动推送相关模块进行设置,具体操作请参见 创建APP。
- iOS应用推送需配置开发环境/生产环境推送证书,具体可参见iOS推送证书设置。
2. SDK下载和集成
2.1 SDK下载
- 在移动推送控制台进行SDK下载;

2.2 SDK引用说明
2.2.1 公共包依赖
- libz.tbd
- libresolv.tbd
- CoreTelephony.framework
- SystemConfiguration.framework
- libsqlite3.tbd(阿里云平台下载的SDK无需依赖,百川平台下载的SDK需要依赖)
2.2.2 SDK目录结构
- CloudPushSDK.framework
- AlicloudUtils.framework
- UTDID.framework
- UTMini.framework(阿里云平台下载的SDK无需依赖,百川平台下载的SDK需要依赖)
2.2.3 引入Framework
- Xcode中,直接把下载SDK目录中的framework拖入对应Target下即可,在弹出框勾选
Copy items if needed。 - 在
Build Phases -> Link Binary With Libraries中,引入2.2.1列出的公共包;
2.2.4 工程引入头文件
#import <CloudPushSDK/CloudPushSDK.h>
2.2.5 说明
- 应用的targets -> Build Settings -> Linking -> Other Linker Flags,请加上
-ObjC这个属性,否则推送服务无法正常使用 iOS 9引入了App Transport Security(ATS)机制,可参考App Transport Security(ATS)机制。 要求App内访问的网络必须使用HTTPS协议,现在阿里移动推送使用的是HTTP安全的加签访问机制来保证安全,未使用HTTPS,所以解决方法如下:在工程的Info.plist中添加NSAppTransportSecurity,添加后会自动转变为App Transport Security Setting,右击该选项选择Show Raw Key/Values,可显示原本添加名;将该选项点击铺开(黑色三角指向下),右击选择Add Row,会自动显示ItemAllow Arbitrary Loads,将Value值设为YES;
- 移动推送iOS SDK已经完成ATS适配,请求都以HTTPS发出,无需在Info.plist中进行ATS配置。
3. Push SDK使用
- 请参照以下代码完成SDK的初始化,其中appKey/appSecret的获取参考创建App;
- (void)initCloudPush {// SDK初始化[CloudPushSDK asyncInit:@"*****" appSecret:@"*****" callback:^(CloudPushCallbackResult *res) {if (res.success) {NSLog(@"Push SDK init success, deviceId: %@.", [CloudPushSDK getDeviceId]);} else {NSLog(@"Push SDK init failed, error: %@", res.error);}}];}
- 向苹果APNs注册获取deviceToken并上报到阿里云推送服务器;
/*** 注册苹果推送,获取deviceToken用于推送** @param application*/- (void)registerAPNS:(UIApplication *)application {if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {// iOS 8 Notifications[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)categories:nil]];[application registerForRemoteNotifications];}else {// iOS < 8 Notifications[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];}}/** 苹果推送注册成功回调,将苹果返回的deviceToken上传到CloudPush服务器*/- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {[CloudPushSDK registerDevice:deviceToken withCallback:^(CloudPushCallbackResult *res) {if (res.success) {NSLog(@"Register deviceToken success.");} else {NSLog(@"Register deviceToken failed, error: %@", res.error);}}];}/** 苹果推送注册失败回调*/- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {NSLog(@"didFailToRegisterForRemoteNotificationsWithError %@", error);}
- 推送消息到来监听;
/*** 注册推送消息到来监听*/- (void)registerMessageReceive {[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(onMessageReceived:)name:@"CCPDidReceiveMessageNotification"object:nil];}/*** 处理到来推送消息** @param notification*/- (void)onMessageReceived:(NSNotification *)notification {CCPSysMessage *message = [notification object];NSString *title = [[NSString alloc] initWithData:message.title encoding:NSUTF8StringEncoding];NSString *body = [[NSString alloc] initWithData:message.body encoding:NSUTF8StringEncoding];NSLog(@"Receive message title: %@, content: %@.", title, body);}
通知打开监听
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {// 点击通知将App从关闭状态启动时,将通知打开回执上报// [CloudPushSDK handleLaunching:launchOptions];(Deprecated from v1.8.1)[CloudPushSDK sendNotificationAck:launchOptions];return YES;}/** App处于启动状态时,通知打开回调*/- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {NSLog(@"Receive one notification.");// 取得APNS通知内容NSDictionary *aps = [userInfo valueForKey:@"aps"];// 内容NSString *content = [aps valueForKey:@"alert"];// badge数量NSInteger badge = [[aps valueForKey:@"badge"] integerValue];// 播放声音NSString *sound = [aps valueForKey:@"sound"];// 取得Extras字段内容NSString *Extras = [userInfo valueForKey:@"Extras"]; //服务端中Extras字段,key是自己定义的NSLog(@"content = [%@], badge = [%ld], sound = [%@], Extras = [%@]", content, (long)badge, sound, Extras);// iOS badge 清0application.applicationIconBadgeNumber = 0;// 通知打开回执上报// [CloudPushSDK handleReceiveRemoteNotification:userInfo];(Deprecated from v1.8.1)[CloudPushSDK sendNotificationAck:userInfo];}
如果使用推送模块,请参考移动推送常见问题
最后更新:2016-12-15 18:25:21
上一篇:
iOS推送证书设置__iOS SDK手册_App SDK 手册_移动推送-阿里云
下一篇:
iOS API介绍__iOS SDK手册_App SDK 手册_移动推送-阿里云
错误码说明__调用方式_API参考手册_开放搜索-阿里云
Java SDK实例程序__最佳实践_归档存储-阿里云
产品术语__产品简介_数据集成-阿里云
查询转码配置信息__直播流操作接口_API 手册_CDN-阿里云
Linux可视化操作界面__应用场景_产品简介_数据管理-阿里云
公测开通指南___用户手册_云服务总线 CSB-阿里云
院士潘建伟:阿里云与中科院联合发布量子计算云平台,计算能力有望跃升100万倍
Check Point “飞天”阿里云 vSEC在云栖大会闪亮登场
查询API上绑定的流控策略__流量控制相关接口_API_API 网关-阿里云
云服务器 ECS 云服务器宕机排查
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云