资源描述
http://www.mobiletrain.org/
iOS开发之推送—极光推送
1.首先介绍一下苹果推送机制(APNS:)
Provider是给你手机应用发出推送消息的服务器,而APNS(Apple Push Notification Service)则是苹果消息推送服务器。你本地的服务器当需要给应用推送一条消息的时候,先要将消息发出到苹果推送服务器,然后再由苹果推送服务器将消息发到安装了该应用的手机。
接下来再看一张解释图:
那么在进行推送过程中,对于初学者最难搞的部分不外乎就是对证书的处理,那么接下来我将会对如何请求推送证书以及配置证书做详细的步骤讲解
关于证书的请求
1.首先找到电脑的,然后打开,找到,再次点开,找到钥匙串访问。
2.接下来点开钥匙串访问,然后电脑左上角点击钥匙串访问à证书助理à从证书颁发机构请求证书
3.第二步执行完毕后会进入到下图(图1)页面,用户电子邮件要填写开发者账号的邮箱,常用名称填写自己的姓名就好,然后要选择存储到磁盘,然后点击继续,这个时候会弹出保存该证书的位置(图2),选择桌面就可以.这个时候就会在桌面生成一份CSR文件
图1
图2
然后打开浏览器,进入到苹果开发者中心页面.点击右上角Account,进入到下图(图3)页面,输入开发者账号密码进入主页,找到下图位置点击,这里是创建开发者证书和发布证书的地方以及x-code执行证书的地方
http://www.mobiletrain.org/
图3
点击后进入到下面的页面(图4)
首先点击AppIds,先创建ID点击下图上的+按钮
点击按钮后进入到下面的页面
App ID Description 填写一下ID描述,要根据工程名称来命名
Bundle ID 需要填写Xcode工程里的Bundle ID
因为是要做推送,所以把下图的PushNotifations选择上然后点击continue
点击完continue后会进入到下图页面,点击registe,然后点击done
点击done后,会弹出来该开发者账号下的所有AppId,如下图,我刚刚自己创建了demo1text,能够找到刚刚创建好的APP ID
此时,依次点击网页左侧的按钮如下图,来创建开发证书和发布证书,在这里说一下开发证书(为了给开发者做代码调试用的证书) 发布证书(将APP发布到APP STORE 上的证书),,,在这里我只拿开发证书举例子,发布证书和开发证书的请求方式一样
点击Development后,会进入到如下页面,点击+号
点击加号后,进入到下面的页面,因为是做推送,所以把Apple Push Notification service SSL选择上,拉到网页最底下,点击continue
进入到下面的页面,大家看App ID 要选择刚刚上一步创建的App ID
一直点击continue 到看到如下页面,点击Choose File这时候要把最开始使用钥匙串申请下来的CSR文件选择上
选择完毕后,再次点击continue会进入到下面的页面,此时开发证书就申请下来了,点击download,把该证书也暂时存放在桌面上
双击刚刚保存在桌面上的证书,然后点开钥匙串à登录à>我的证书就会发现刚刚双击的证书出现在我的证书里面了,如下图
然后在我的证书目录下,右键选择刚刚的开发证书,选择导出(切忌此处不要把证书展开)
然后会进入到如下页面,因为我导出的是开发证书,所以我写上开发2个字,位置也选择桌面吧.这样就生成了一个p12文件.再点击存储的时候需要填写密码,最好就写简单易记的,例如123456,这个密码一定要牢记
到此为止,开发证书的片p12文件就搞定了,同理,发布证书按照上面的开发证书的步骤也会生成一个p12文件.
证书处理完毕就开始进入正题,开始搞推送,推送的知识点里对于初学者也就请求证书会麻烦一点
咱们这里讲推送呢,借助一个第三方推送平台à极光推送官网地址是
还不是极光开发者的先注册成为开发者,这里对于注册开发者就不做过多的讲解
在极光的主页,点击右上角头像à控制台,会进入到如下页面,点击创建应用
点击创建应用后会进入到如下页面,全部信息填写完毕后,点击创建我的应用,这个时候,应用就创建好了
,
应用创建好了之后,进入到该应用里,如下图,要记住这个Appkey,它是App能否推送的关键,因为下面的Bundle ID是和你xcode工程的Bundle ID一致的
这个时候,极光推送对于APP的配置就结束了,接下来就是代码部分:首先去极光推送API下载相关的库和添加系统依赖库,这个极光文档里面都有
首先需要在工程内部新建一个plist文件,如下图,如果建好plist之后,发现plist路径不能识别,建议从工程内找到该plist,拖拽到桌面,然后回到工程内删除掉plist文件,再从桌面添加进来
在APPDelegate里面的代码部分如下
首先引入头文件
在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法里实现如下代码:
//极光推送
if([[[UIDevicecurrentDevice]systemVersion]floatValue] >=8.0){
[JPUSHServiceregisterForRemoteNotificationTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert) categories:nil];
}else{
[JPUSHServiceregisterForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert) categories:nil];
}
[JPUSHServicesetBadge:0];
NSString *path = [[NSBundlemainBundle]pathForResource:@"PushConfig"ofType:@"plist"];
NSDictionary *dic = [[NSDictionaryalloc]initWithContentsOfFile:path];
[JPUSHServicesetupWithOption:launchOptionsappKey:[dicobjectForKey:@"APP_KEY"] channel:[dicobjectForKey:@"CHANNEL"]
apsForProduction:[dicobjectForKey:@"APS_FOR_PRODUCTION"]];
另外还需要写几个其他的方法,如下
- (void)application:(UIApplication*)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
// Required
[JPUSHServiceregisterDeviceToken:deviceToken];
}
- (void)application:(UIApplication*)applicationdidReceiveRemoteNotification:
(NSDictionary*)userInfo {
// Required,For systems with less than or equal to iOS6
[JPUSHServicehandleRemoteNotification:userInfo];
}
- (void)application:(UIApplication*)applicationdidReceiveRemoteNotification:
(NSDictionary*)userInfofetchCompletionHandler:(void (^)
(UIBackgroundFetchResult))completionHandler {
// IOS 7 Support Required
[JPUSHServicehandleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
- (void)application:(UIApplication*)applicationdidFailToRegisterForRemoteNotificationsWithError:(nonnullNSError *)error{
}
到此为止,极光推送就可以成功了。
北京千锋互联科技有限公司 版权所有
展开阅读全文