本文匹配的 SDK版本:r1.2.5 之后。ios
查看最近更新了解最新的SDK更新状况。api
极光推送(JPush)是一个端到端的推送服务,使得服务器端消息可以及时地推送到终端用户手机上,让开发者积极地保持与用户的链接,从而提升用户活跃度、提升应用的留存率。极光推送客户端支持 Android, iOS 两个平台。服务器
本 iOS SDK 方便开发者基于 JPush 来快捷地为 iOS App 增长推送功能,减小集成 APNs 须要的工做量、开发复杂度。app
包名为JPush-iOS-SDK-[版本号]框架
* 建立成功后自动生成 AppKey 用以标识该应用。 fetch
在你的工程中建立一个新的Property List文件,并将其命名为PushConfig.plist,填入Portal为你的应用提供的APP_KEY等参数。ui
{ "APS_FOR_PRODUCTION" = "0"; "CHANNEL" = "Publish channel"; "APP_KEY" = "AppKey copied from JPush Portal application"; }
APIs 主要集中在 APService 接口类里。spa
@interface APService : NSObject // init Push + (void)setupWithOption:(NSDictionary *)launchingOption; // register notification type + (void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types; // upload device token + (void)registerDeviceToken:(NSData *)deviceToken; // handle notification recieved + (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
监听系统事件,相应地调用 JPush SDK 提供的 API 来实现功能。代理
如下 3 个事件监听与调用 JPush SDK API 都是必须的。请直接复制以下代码块里,注释为 "Required" 的行,到你的应用程序代理类里相应的监听方法里。code
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; // Required if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { //能够添加自定义categories [APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil]; } else { //categories 必须为nil [APService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil]; } // Required [APService setupWithOption:launchOptions]; return YES; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Required [APService registerDeviceToken:deviceToken]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Required [APService handleRemoteNotification:userInfo]; } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // IOS 7 Support Required [APService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); }
API里面提供了下面 5 种类型的通知:
extern NSString * const kJPFNetworkDidSetupNotification; // 创建链接
extern NSString * const kJPFNetworkDidCloseNotification; // 关闭链接
extern NSString * const kJPFNetworkDidRegisterNotification; // 注册成功
extern NSString * const kJPFNetworkDidLoginNotification; // 登陆成功
extern NSString * const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS)
其中,kJPFNetworkDidReceiveMessageNotification通知是有传递数据的,能够经过NSNotification中的userInfo方法获取,包括标题、内容、内容类型、扩展信息等