阅读1066 返回首页    go 阿里云


iOS SDK配置__iOS SDK手册_App SDK 手册_移动推送-阿里云

1. 创建应用

到阿里云移动推送控制台创建应用,应用创建完成后,进入移动推送相关模块进行设置,具体操作请参见 创建APP

2. SDK下载和集成

2.1 SDK下载

  • 在移动推送控制台进行SDK下载;

ios-sdk-download

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 工程引入头文件

  1. #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,会自动显示Item Allow Arbitrary Loads,将Value值设为YES
  • 移动推送iOS SDK已经完成ATS适配,请求都以HTTPS发出,无需在Info.plist中进行ATS配置。

3. Push SDK使用

  • 请参照以下代码完成SDK的初始化,其中appKey/appSecret的获取参考创建App
  1. - (void)initCloudPush {
  2. // SDK初始化
  3. [CloudPushSDK asyncInit:@"*****" appSecret:@"*****" callback:^(CloudPushCallbackResult *res) {
  4. if (res.success) {
  5. NSLog(@"Push SDK init success, deviceId: %@.", [CloudPushSDK getDeviceId]);
  6. } else {
  7. NSLog(@"Push SDK init failed, error: %@", res.error);
  8. }
  9. }];
  10. }
  • 向苹果APNs注册获取deviceToken并上报到阿里云推送服务器;
  1. /**
  2. * 注册苹果推送,获取deviceToken用于推送
  3. *
  4. * @param application
  5. */
  6. - (void)registerAPNS:(UIApplication *)application {
  7. if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
  8. // iOS 8 Notifications
  9. [application registerUserNotificationSettings:
  10. [UIUserNotificationSettings settingsForTypes:
  11. (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)
  12. categories:nil]];
  13. [application registerForRemoteNotifications];
  14. }
  15. else {
  16. // iOS < 8 Notifications
  17. [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
  18. (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
  19. }
  20. }
  21. /*
  22. * 苹果推送注册成功回调,将苹果返回的deviceToken上传到CloudPush服务器
  23. */
  24. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
  25. [CloudPushSDK registerDevice:deviceToken withCallback:^(CloudPushCallbackResult *res) {
  26. if (res.success) {
  27. NSLog(@"Register deviceToken success.");
  28. } else {
  29. NSLog(@"Register deviceToken failed, error: %@", res.error);
  30. }
  31. }];
  32. }
  33. /*
  34. * 苹果推送注册失败回调
  35. */
  36. - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
  37. NSLog(@"didFailToRegisterForRemoteNotificationsWithError %@", error);
  38. }
  • 推送消息到来监听;
  1. /**
  2. * 注册推送消息到来监听
  3. */
  4. - (void)registerMessageReceive {
  5. [[NSNotificationCenter defaultCenter] addObserver:self
  6. selector:@selector(onMessageReceived:)
  7. name:@"CCPDidReceiveMessageNotification"
  8. object:nil];
  9. }
  10. /**
  11. * 处理到来推送消息
  12. *
  13. * @param notification
  14. */
  15. - (void)onMessageReceived:(NSNotification *)notification {
  16. CCPSysMessage *message = [notification object];
  17. NSString *title = [[NSString alloc] initWithData:message.title encoding:NSUTF8StringEncoding];
  18. NSString *body = [[NSString alloc] initWithData:message.body encoding:NSUTF8StringEncoding];
  19. NSLog(@"Receive message title: %@, content: %@.", title, body);
  20. }

通知打开监听

  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  2. // 点击通知将App从关闭状态启动时,将通知打开回执上报
  3. // [CloudPushSDK handleLaunching:launchOptions];(Deprecated from v1.8.1)
  4. [CloudPushSDK sendNotificationAck:launchOptions];
  5. return YES;
  6. }
  7. /*
  8. * App处于启动状态时,通知打开回调
  9. */
  10. - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {
  11. NSLog(@"Receive one notification.");
  12. // 取得APNS通知内容
  13. NSDictionary *aps = [userInfo valueForKey:@"aps"];
  14. // 内容
  15. NSString *content = [aps valueForKey:@"alert"];
  16. // badge数量
  17. NSInteger badge = [[aps valueForKey:@"badge"] integerValue];
  18. // 播放声音
  19. NSString *sound = [aps valueForKey:@"sound"];
  20. // 取得Extras字段内容
  21. NSString *Extras = [userInfo valueForKey:@"Extras"]; //服务端中Extras字段,key是自己定义的
  22. NSLog(@"content = [%@], badge = [%ld], sound = [%@], Extras = [%@]", content, (long)badge, sound, Extras);
  23. // iOS badge 清0
  24. application.applicationIconBadgeNumber = 0;
  25. // 通知打开回执上报
  26. // [CloudPushSDK handleReceiveRemoteNotification:userInfo];(Deprecated from v1.8.1)
  27. [CloudPushSDK sendNotificationAck:userInfo];
  28. }

如果使用推送模块,请参考移动推送常见问题

最后更新:2016-12-15 18:25:21

  上一篇:go iOS推送证书设置__iOS SDK手册_App SDK 手册_移动推送-阿里云
  下一篇:go iOS API介绍__iOS SDK手册_App SDK 手册_移动推送-阿里云