1-證書申請
證書指南官方鏈接
http://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/
2-工程配置
導(dǎo)入SDK
將SDK包解壓故痊,在Xcode中選擇“Add files to 'Your project name'...”拼苍,將解壓后的lib子文件夾(包含JPUSHService.h、jpush-ios-x.x.x.a)添加到你的工程目錄中靠益。
添加Framework
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胧后,請不要添加)
UserNotifications.framework(Xcode8及以上)
Build Settings
如果你的工程需要支持小于7.0的iOS系統(tǒng),請到Build Settings 關(guān)閉 bitCode 選項(xiàng)抱环,否則將無法正常編譯通過壳快。
設(shè)置 Search Paths 下的 User Header Search Paths 和 Library Search Paths,比如SDK文件夾(默認(rèn)為lib)與工程文件在同一級目錄下,則都設(shè)置為"$(SRCROOT)/{靜態(tài)庫所在文件夾名稱}"即可镇草。
Capabilities
如使用Xcode8及以上環(huán)境開發(fā)眶痰,請開啟Application Target的Capabilities->Push Notifications選項(xiàng),如圖:
允許Xcode7支持Http傳輸方法
如果您使用的是2.1.9以后的版本則不需要配置此步驟如果用的是Xcode7或更新版本梯啤,需要在App項(xiàng)目的plist手動配置下key和值以支持http傳輸:
選擇1:根據(jù)域名配置
在項(xiàng)目的info.plist中添加一個(gè)Key:NSAppTransportSecurity竖伯,類型為字典類型。
然后給它添加一個(gè)NSExceptionDomains,類型為字典類型七婴;
把需要的支持的域添加給NSExceptionDomains宏胯。其中jpush.cn作為Key,類型為字典類型本姥。
每個(gè)域下面需要設(shè)置2個(gè)屬性:NSIncludesSubdomains肩袍、NSExceptionAllowsInsecureHTTPLoads。兩個(gè)屬性均為Boolean類型婚惫,值分別為YES氛赐、YES。
選擇2:全局配置
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
初始化代碼
在AppDelegate.m中導(dǎo)入#import "JPUSHService.h"
在以下方法中添加代碼:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
#pragma mark --激光推送--
// 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
// 如需繼續(xù)使用pushConfig.plist文件聲明appKey等配置內(nèi)容先舷,
請依舊使用[JPUSHService setupWithOption:launchOptions]方式初始化艰管。
[JPUSHService setupWithOption:launchOptions appKey:@"appKey"
channel:nil
apsForProduction:FALSE // FALSE開發(fā)環(huán)境下的測試,YES為生產(chǎn)環(huán)境下的測試
advertisingIdentifier:nil];
}
// 請?jiān)贏ppDelegate.m實(shí)現(xiàn)該回調(diào)方法并添加回調(diào)方法中的代碼
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
/// Required - 注冊 DeviceToken
[JPUSHService registerDeviceToken:deviceToken];
}
通知
此時(shí)可前往極光控制臺發(fā)送推送消息
自定義消息
如果需要應(yīng)用接收自定義消息蒋川,我們需要添加一個(gè)觀察者牲芋。
(自定義消息是長連接需要應(yīng)用在前臺,如果應(yīng)用在后臺會保存為離線)
在以下方法中添加觀察者
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self
selector:@selector(networkDidReceiveMessage:)
name:kJPFNetworkDidReceiveMessageNotification
object:nil];
}
實(shí)現(xiàn)回調(diào)
- (void)networkDidReceiveMessage:(NSNotification *)notification {
NSLog(@"did receive messagr %@",notification);
}
打印結(jié)果
自定義消息可以添加多個(gè)字段捺球,添加完成后點(diǎn)擊立即發(fā)送
打印結(jié)果
如有疑問查看官方教程
JPush iOS SDK 教程
鏈接: http://docs.jpush.io/client/ios_tutorials/