极光推送
一、极光推送工程端
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 中导入如下的两个头文件
1 // 极光服务头文件 2 #import "JPUSHService.h" 3 // ASIdentifierManager控制器头文件,广告,可以不使用 4 #import <AdSupport/ASIdentifierManager.h>
调用代码
1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 2 // Override point for customization after application launch. 3 4 // 广告(一般不使用) 5 // NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; 6 //Required 7 if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { 8 //可以添加自定义categories 9 [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | 10 UIUserNotificationTypeSound | 11 UIUserNotificationTypeAlert) 12 categories:nil]; 13 } else { 14 //categories 必须为nil 15 [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | 16 UIRemoteNotificationTypeSound | 17 UIRemoteNotificationTypeAlert) 18 categories:nil]; 19 } 20 //Required 21 // 如需继续使用pushConfig.plist文件声明appKey等配置内容,请依旧使用[JPUSHService setupWithOption:launchOptions]方式初始化。 22 [JPUSHService setupWithOption:launchOptions appKey:@"你创建的应用的APPKey" // 注意一定要是自己的 23 channel:@"App Store" // 指明应用程序包的下载渠道,为方便分渠道统计,具体值由你自行定义 24 apsForProduction:0 // 1.3.1版本新增,用于标识当前应用所使用的APNs证书环境 0 (默认值)表示采用的是开发证书,1 表示采用生产证书发布应用 25 advertisingIdentifier:nil]; // 不使用就将advertisingIdentifier置为nil 26 // advertisingIdentifier:advertisingId]; 27 28 // 当你入坑创建了plist文件,也可以使用这个初始化方法 29 // [JPUSHService setupWithOption:launchOptions]; 30 31 return YES; 32 } 33 34 #pragma mark - 监听 35 - (void)application:(UIApplication *)application 36 didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 37 38 /// Required - 注册 DeviceToken 39 NSLog(@"%d == deviceToken == %@",__LINE__, deviceToken); 40 [JPUSHService registerDeviceToken:deviceToken]; 41 } 42 43 // 反馈给服务器 44 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 45 46 // Required,For systems with less than or equal to iOS6 47 48 [UIApplication sharedApplication].applicationIconBadgeNumber = 0; 49 50 [JPUSHService handleRemoteNotification:userInfo]; 51 } 52 53 - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { 54 //Optional 55 NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error); 56 }
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。
如图:
选择2:全局配置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
以上就是你在工程中所有的配置,下面就是关于极光推送服务器端的操作!
二、极光推送服务器端
1、注册用户
2、创建应用
3、发送通知
通知内容直接填写就可以
推送对象需要就行一下选择,如下图:
RegistrationID会在你工程的控制台打印,你可以根据这个来给一个人进行发送通知