你的位置:首页 > 操作系统

[操作系统]iOS学习之极光推送


一、极光推送工程端

1、下载SDK

 极光推送是一个推送消息的第三方,SDK下载:https://www.jpush.cn/common/products

 集成压缩包内容:包名为JPush-iOS-SDK-{版本号}

  • lib文件夹:包含头文件 JPUSHService.h,静态库文件jpush-ios-x.x.x.a ,支持的iOS版本为 5.0 及以上版本。(请注意:模拟器不支持APNs)

  • pdf文件:集成指南

  • demo文件夹:示例

 真如上面的介绍,我们在工程中需要 lib 文件夹,因此就只需要将 lib 文件夹 导入。

2、导入必要的框架

  • CFNetwork.framework

  • CoreFoundation.framework

  • CoreTelephony.framework

  • SystemConfiguration.framework

  • CoreGraphics.framework

  • Foundation.framework

  • UIKit.framework

  • Security.framework

  • Xcode7需要的是 libz.tbd ;Xcode7以下版本是 libz.dylib

  • Adsupport.framework (获取IDFA需要;如果不使用IDFA,请不要添加)

3、plist 文件创建之坑

 在极光的帮助文档中有一个坑,就是 创建并配置PushConfig.plist文件 。如果初始化 JPUSHService 使用极光 <= 1.8.8版本的SDK的注册方法(+ (void)setupWithOption:(NSDictionary *)launchingOption; 以弃用)就创建,如果使用之后版本的初始化方法,就不需要。我在下面就使用现在最新的一个版本 2.1.5,所以就没有创建 PushConfig.plist文件

4、代码

 现在 AppDelegate 中导入如下的两个头文件

// 极光服务头文件#import "JPUSHService.h"// ASIdentifierManager控制器头文件,广告,可以不使用#import <AdSupport/ASIdentifierManager.h>

 调用代码

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  // Override point for customization after application launch.    // 广告(一般不使用)//  NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];  //Required  if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {    //可以添加自定义categories    [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge |                             UIUserNotificationTypeSound |                             UIUserNotificationTypeAlert)                       categories:nil];  } else {    //categories 必须为nil    [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |                             UIRemoteNotificationTypeSound |                             UIRemoteNotificationTypeAlert)                       categories:nil];  }  //Required  // 如需继续使用pushConfig.plist文件声明appKey等配置内容,请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化。  [JPUSHService setupWithOption:launchOptions appKey:@"你创建的应用的APPKey" // 注意一定要是自己的             channel:@"App Store" // 指明应用程序包的下载渠道,为方便分渠道统计,具体值由你自行定义         apsForProduction:0 // 1.3.1版本新增,用于标识当前应用所使用的APNs证书环境 0 (默认值)表示采用的是开发证书,1 表示采用生产证书发布应用      advertisingIdentifier:nil]; // 不使用就将advertisingIdentifier置为nil//      advertisingIdentifier:advertisingId];    // 当你入坑创建了plist文件,也可以使用这个初始化方法//  [JPUSHService setupWithOption:launchOptions];    return YES;}#pragma mark - 监听- (void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {    /// Required - 注册 DeviceToken  NSLog(@"%d == deviceToken == %@",__LINE__, deviceToken);  [JPUSHService registerDeviceToken:deviceToken];}// 反馈给服务器- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {    // Required,For systems with less than or equal to iOS6    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;    [JPUSHService handleRemoteNotification:userInfo];}- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {  //Optional  NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);}

5、关于广告(IDFA)

 r2.1.5版本增加一个上传IDFA字符串的接口:

+ (void)setupWithOption:(NSDictionary *)launchingOption         appKey:(NSString *)appKey         channel:(NSString *)channel    apsForProduction:(BOOL)isProduction  advertisingIdentifier:(NSString *)advertisingId; 

 这个方法也就是我在上面使用的,如果不使用IDFA,仍可使用下面的接口:

+ (void)setupWithOption:(NSDictionary *)launchingOption         appKey:(NSString *)appKey         channel:(NSString *)channel    apsForProduction:(BOOL)isProduction;

 总结:三种初始化方法可以根据你自己的需求随意选择。

6、允许XCode7支持Http传输方法

 如果用的是Xcode7时,需要在App项目的plist手动配置下key和值以支持http传输:

 选择1:根据域名配置

  • 在项目的info.plist中添加一个Key:App Transport Security Settings,类型为字典类型。

  • 字典中添加一个Key:Allow Arbitrary Loads,类型为Boolean类型,值为YES。

  如图:

 RegistrationID会在你工程的控制台打印,你可以根据这个来给一个人进行发送通知

广西旅游指南攻略大全广西旅游住哪里比较方便广西旅游住宿攻略广西旅游最佳时间广西自驾游最佳路线2015圣诞去厦门石室禅院好玩吗? 厦门梅山寺好玩吗? 厦门石室禅院自助游怎走? 厦门梅山寺怎么去? 深圳最大的书城在哪里?怎么走? 深圳盐田到东莞塘厦莲湖如何坐车呢? 深圳东湖公园在哪个区? 在深圳五一如果下雨天有什么地方可去游玩的呢? 秋风起秋叶黄 浙江银杏观赏好去处推荐(组图) 无锡秋天最美的树 就在你身边 三亚吃住行哪里好? 哏儿都美女在什么时候最可爱 阳朔菩萨水岩小孩多高免费?菩萨水岩儿童票价格? 10月旅游去哪里好?十月份适合去哪里旅游? 清远古龙峡国际漂好玩吗?古龙峡国际漂要多久? 在束河 有一种旅游叫慵懒的闲逛 RFT3100-2FT7AB Datasheet RFT3100-2FT7AB Datasheet RFT3100-2ETQAB Datasheet RFT3100-2ETQAB Datasheet RM10TB-M--C977 Datasheet RM10TB-M--C977 Datasheet 天涯海角在哪个省 天涯海角在哪个省 天涯海角在哪个省 迪拜塔多少层 迪拜塔多少层 迪拜塔多少层 胡里山炮台好玩吗 胡里山炮台好玩吗 胡里山炮台好玩吗