一、極光推送工程端 1、下載SDK 極光推送是一個推送消息的第三方,SDK下載:https://www.jpush.cn/common/products 集成壓縮包內容:包名為JPush-iOS-SDK-{版本號} lib文件夾:包含頭文件 JPUSHService.h,靜態庫文件jpush-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 *)application didRegisterForRemoteNotificationsWithDeviceToken:(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。
如圖:
選擇2:全局配置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
以上就是你在工程中所有的配置,下麵就是關於極光推送伺服器端的操作!
二、極光推送伺服器端
1、註冊用戶
2、創建應用