第一步 证书的问题,这里我就直接以开发证书为例,如果是生产证书,就直接自己再生成一个生产证书,搞成P12文件,提交到极光推送的控制台,需要注意的是,推送证书,开发证书,profile使用的证书必须一致.尽管在xcode8 模式下 ,xcode自身就有管理证书的功能了.但是这个测试和生产证书还是要自己去开发者中心生成导出的.
第二步 导入sdk
将下载的sdk拖入我们的工程,就两个东西,一个是APService.h,一个是libPushSDK-1.8.8.a。证书选择要正确,确保是我们前期工作中生成的证书!
第三步 需要导入各种依赖库
!!!特别注意:我们需要导入必须得库,不然会报错!
必须依赖库:CoreGraphics.framework、CFNetwork.framework、CoreFoundation.framework、CoreTelephony.framework、SystemConfiguration.framework、Security.framework、libz.tbd、Foundation.framework、UIKit.framework
运行后会弹框问我们是否接收推送,若无肯定是没有集成好!
PS:如果使用cocoapods导入极光的话,这一步的操作可以忽略,cocoapods会自动关联依赖库,cocoapods的使用请见我的博客!极光推送的cocoapods语句为:pod “JPush”
第四步 进入项目的appdelegate里面,首先导入头文件
#import "AppDelegate.h"
#import "APService.h"
第五步 进行推送消息的注册 向服务器上报Device Token以及向服务器上报收到的消息
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
//进行推送消息的注册
[APService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
[APService setupWithOption:launchOptions];
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self
selector:@selector(networkDidLogin:)
name:kJPFNetworkDidLoginNotification
object:nil];
return YES;
}
//极光推送required, 向服务器上报Device Token
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{
[APService registerDeviceToken:deviceToken];
}
//收到推送信息,获取最新数据。
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo {
[self refreshServierDataAndUI];
[APService handleRemoteNotification:userInfo];
}
//向服务器上报收到的消息
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler{
if (application.applicationState == UIApplicationStateActive) {
//程序当前正处于前台收到apns通知
//从服务器获取最新的数据,存入数据库,更新本地界面同时更新服务器的状态为已经接收
[self refreshServierDataAndUI];
}
//这个userInfo就是jpush推送来的消息内容
[APService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
另外,在使用过程中也遇到一些问题 参见 ios 极光推送 RegistrationID为空的问题