1066
阿里云
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:self
selector:@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 清0
application.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-阿里云