项目实战:iOS极光推送集成(30分钟搞定)
2016-04-10 15:33
676 查看
推送有很多,如个推、友盟、融云和极光等等。在这里就讲下如何使用极光推送。主要内容是将官方文档资料详细汇总并一步一步集成到项目中,您也可以直接去官方文档阅览。
[b]极光推送SDK下载[/b]
直接打开官方文档下载最新的SDK
[b]极光网创建APP并上传证书[/b]
一、制作推送证书和描述文件:需要注意要制作两个证书,一个是测试证书,一个是发布证书,具体看官方文档截图:点击查看证书制作
直接看《iOS 证书 设置指南》其他的不用看了,废话太多
二、在极光推送官网注册你的APP吧。bundle id要和你项目一直,如果是测试就选择开发环境,上线后再切换下就可以了;开发环境和生产环境的证书千万别弄混了,是p12文件,还有密码的。
[b]项目配置问题[/b]
1、直接将SDK中的lib文件夹拖到项目中,里面主要是两个文件,.a静态安装包和.h文件。还有Demo中一个声音文件要添加。
2、添加必要的框架
CFNetwork.framework
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
Adsupport.framework (获取IDFA需要)
Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib
3、如果SDK是2.1.0后的,直接编译,如果报错,会有一个bitcode错误,直接到Build Settings 关闭 bitCode 选项;
如果还有报错,看下是否是因为找不到.a的静态库,把静态库地址拖过去就可以了。
4、如果是老版本的,SDK1.8.8创建并配置PushConfig.plist文件,如图
如果是最新的SDK,直接跳过了,直接忽视这条就可以了
5、如果用的是Xcode7时,需要在App项目的plist手动加入以下key和值以支持http传输:
1.在Info.plist中添加NSAppTransportSecurity类型Dictionary。
2.在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES
注意:不是单元测试的info.plist
6、打开推送设置
7、打开xxx-info.plist的Bundle identifier项把上传到JPush 控制台的bundle id填写进去:
[b]项目代码[/b]
你也可以直接在第一步的SDK中查看具体的Demo。
在Appdelegate.h导入头文件
setupWithOption 方法中需要的参数
appkey:注册的APPkey,网站上找去吧
channel:随便写个字符串吧,也没事
advertisingIdentifier:广告标识符,(苹果都废弃了,这厮还要,哎)
apsForProduction:BOOL值,区分是开发环境还是测试环境
接下来是几个回调函数设置下就可以了
具体API参考具体版本SDK,我的SDK是2.1.5,最新的哦!
completionHandlez作用主要是2个:
1、并根据传递的UIBackgroundFetchResult 参数记录新数据是否可用
2、调用完成的处理代码时,应用的界面缩略图会自动更新
[b]测试推送[/b]
好了,你现在在真机跑下项目,然后就可以去极光网站测试你的推送是否成功了(app在后台或者锁屏状态下都可以收到通知的)
[b]问题汇总[/b]
如果控制台没有打印出你的消息,说明你有问题了。
不要急,看下官方的问题汇总吧,反正你按照上面做的,保证没问题的哦,》》》》》》问题汇总
[b]极光推送SDK下载[/b]
直接打开官方文档下载最新的SDK
[b]极光网创建APP并上传证书[/b]
一、制作推送证书和描述文件:需要注意要制作两个证书,一个是测试证书,一个是发布证书,具体看官方文档截图:点击查看证书制作
直接看《iOS 证书 设置指南》其他的不用看了,废话太多
二、在极光推送官网注册你的APP吧。bundle id要和你项目一直,如果是测试就选择开发环境,上线后再切换下就可以了;开发环境和生产环境的证书千万别弄混了,是p12文件,还有密码的。
[b]项目配置问题[/b]
1、直接将SDK中的lib文件夹拖到项目中,里面主要是两个文件,.a静态安装包和.h文件。还有Demo中一个声音文件要添加。
2、添加必要的框架
CFNetwork.framework
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
Adsupport.framework (获取IDFA需要)
Xcode7需要的是libz.tbd;Xcode7以下版本是libz.dylib
3、如果SDK是2.1.0后的,直接编译,如果报错,会有一个bitcode错误,直接到Build Settings 关闭 bitCode 选项;
如果还有报错,看下是否是因为找不到.a的静态库,把静态库地址拖过去就可以了。
4、如果是老版本的,SDK1.8.8创建并配置PushConfig.plist文件,如图
如果是最新的SDK,直接跳过了,直接忽视这条就可以了
5、如果用的是Xcode7时,需要在App项目的plist手动加入以下key和值以支持http传输:
1.在Info.plist中添加NSAppTransportSecurity类型Dictionary。
2.在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES
注意:不是单元测试的info.plist
6、打开推送设置
7、打开xxx-info.plist的Bundle identifier项把上传到JPush 控制台的bundle id填写进去:
[b]项目代码[/b]
你也可以直接在第一步的SDK中查看具体的Demo。
在Appdelegate.h导入头文件
#import <AdSupport/AdSupport.h> #import "JPUSHService.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString]; if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) { [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil]; } else { [JPUSHService registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil]; } [JPUSHService setupWithOption:launchOptions appKey:JPushAPPKEY channel:channel apsForProduction:isProduction advertisingIdentifier:advertisingId]; }
setupWithOption 方法中需要的参数
appkey:注册的APPkey,网站上找去吧
channel:随便写个字符串吧,也没事
advertisingIdentifier:广告标识符,(苹果都废弃了,这厮还要,哎)
apsForProduction:BOOL值,区分是开发环境还是测试环境
接下来是几个回调函数设置下就可以了
- (void)applicationDidEnterBackground:(UIApplication *)application { [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; } - (void)applicationWillEnterForeground:(UIApplication *)application { [application setApplicationIconBadgeNumber:0]; [application cancelAllLocalNotifications]; } - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ [JPUSHService registerDeviceToken:deviceToken]; NSLog(@"%@", [NSString stringWithFormat:@"Device Token: %@", deviceToken]); } - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error); } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{ NSLog(@"8.0收到通知:%@",[self logDic:userInfo]); [JPUSHService handleRemoteNotification:userInfo]; completionHandler(UIBackgroundFetchResultNewData); }
具体API参考具体版本SDK,我的SDK是2.1.5,最新的哦!
completionHandlez作用主要是2个:
1、并根据传递的UIBackgroundFetchResult 参数记录新数据是否可用
2、调用完成的处理代码时,应用的界面缩略图会自动更新
[b]测试推送[/b]
好了,你现在在真机跑下项目,然后就可以去极光网站测试你的推送是否成功了(app在后台或者锁屏状态下都可以收到通知的)
[b]问题汇总[/b]
如果控制台没有打印出你的消息,说明你有问题了。
不要急,看下官方的问题汇总吧,反正你按照上面做的,保证没问题的哦,》》》》》》问题汇总
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- Mysql 错误问题汇总(不断更新中)
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- .net 通过URL推送POST数据具体实现
- Android中使用WebSocket实现群聊和消息推送功能(不使用WebView)
- Android顶栏定时推送消息