IOS集成JPush
本篇文章采用Xcode手动集成JPush
证书
参考网址:https://docs.jiguang.cn//jpush/client/iOS/ios_cer_guide/
下载SDK
下载网址:https://docs.jiguang.cn//jpush/resources/
- SDK目录
导入SDK
- 将Lib中的.h文件与.a文件导入项目
- .h文件
- .a文件
手动导入
- 添加框架
CFNetwork.framework
CoreFoundation.framework
CoreTelephony.framework
SystemConfiguration.framework
CoreGraphics.framework
Foundation.framework
UIKit.framework
Security.framework
libz.tbd(Xcode 7以下版本是libz.dylib)
AdSupport.framework(获取IDFA需要;如果不使用IDFA,请不要添加)
UserNotifications.framework(Xcode 8及以上)
libresolv.tbd(JPush 2.2.0及以上版本需要,Xcode 7以下版本是libresolv.dylib)
构建设置
如果你的工程需要支持小于7.0的iOS系统,请到构建设置关闭bitCode选项,否则将无法正常编译通过。
设置搜索路径下的用户头搜索路径和库搜索路径,比如SDK文件夹(默认为lib)与工程文件在同一级目录下,则都设置为“$(SRCROOT)/ {静态库所在文件夹名称} “即可。
功能
如使用Xcode 8及以上环境开发,请开启Application Target的功能 - >推送通知选项,如图:
允许Xcode 7支持Http传输方法
- 在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型。
- 然后给它添加一个NSExceptionDomains,类型为字典类型;
- 把需要的支持的域添加给NSExceptionDomains。其中jpush.cn作为Key,类型为字典类型。
- 每个域下面需要设置2个属性:NSIncludesSubdomains,NSExceptionAllowsInsecureHTTPLoads。两个属性均为布尔类型,值分别为YES,YES。
代码配置
添加头文件
- 将以下代码添加到AppDelegate.m引用头文件的位置。
// 引入 JPush 功能所需头文件
#import "JPUSHService.h"
// iOS10 注册 APNs 所需头文件
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
#import <UserNotifications/UserNotifications.h>
#endif
- 添加代表
@interface AppDelegate ()<JPUSHRegisterDelegate>
@end
添加初始化APNs代码
- 请将以下代码添加到 - (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//Required
JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound|JPAuthorizationOptionProvidesAppNotificationSettings;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
// 可以添加自定义 categories
// NSSet<UNNotificationCategory *> *categories for iOS10 or later
// NSSet<UIUserNotificationCategory *> *categories for iOS8 and iOS9
}
[JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
添加初始化JPush代码
- 将以下代码添加到 - (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
// Required
// init Push
// notice: 2.1.5 版本的 SDK 新增的注册方法,改成可上报 IDFA,如果没有使用 IDFA 直接传 nil
// 如需继续使用 pushConfig.plist 文件声明 appKey 等配置内容,请依旧使用 [JPUSHService setupWithOption:launchOptions] 方式初始化。
[JPUSHService setupWithOption:launchOptions appKey:@"你的appkey"
channel:@"Publish channel"
apsForProduction:NO
advertisingIdentifier:nil];
部分参数说明:
- APPKEY
- 选择Web Portal上的应用,点击“设置”获取其appkey值。请确保应用内配置的appkey与Portal上创建应用后生成的appkey一致。
- 渠道
- 指明应用程序包的下载渠道,为方便分渠道统计,具体值由你自行定义,如:App Store。
- apsForProduction
- 1.3.1版本新增,用于标识当前应用所使用的APNs证书环境。
- 0(默认值)表示采用的是开发证书,1表示采用生产证书发布应用。
- 注:此字段的值要与Build Settings的Code Signing配置的证书环境一致。
- advertisingIdentifier
- 详见关于IDFA。
注册APNs成功并上报DeviceToken
- 在AppDelegate.m实现该回调方法并添加回调方法中的代码
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
/// Required - 注册 DeviceToken
[JPUSHService registerDeviceToken:deviceToken];
}
实现注册APNs失败接口
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
//Optional
NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}
添加处理APNs通知回调方法
- 在AppDelegate.m实现该回调方法并添加回调方法中的代码
// iOS 12 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification{
if (notification && [notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
//从通知界面直接进入应用
}else{
//从通知设置界面进入应用
}
}
// iOS 10 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
// Required
NSDictionary * userInfo = notification.request.content.userInfo;
if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[JPUSHService handleRemoteNotification:userInfo];
}
completionHandler(UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有 Badge、Sound、Alert 三种类型可以选择设置
}
// iOS 10 Support
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
// Required
NSDictionary * userInfo = response.notification.request.content.userInfo;
if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
[JPUSHService handleRemoteNotification:userInfo];
}
completionHandler(); // 系统要求执行这个方法
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
// Required, iOS 7 Support
[JPUSHService handleRemoteNotification:userInfo];
completionHandler(UIBackgroundFetchResultNewData);
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
// Required, For systems with less than or equal to iOS 6
[JPUSHService handleRemoteNotification:userInfo];
}
成功运行
- 真机调试该项目,如果控制台输出以下日志则代表您已经集成成功。
2016-08-19 17:12:12.745823 219b28[1443:286814] | JPUSH | I - [JPUSHLogin]
----- login result -----
uid:5460310207
registrationID:171976fa8a8620a14a4
消息推送
参考上一篇文章(JAVA集成JPush):https://www.cnblogs.com/maggieq8324/p/11414823.html
IOS集成JPush的更多相关文章
- (九十七)集成JPush实现远程通知和推送的发送
上节介绍了通过直接和APNS交互实现推送的方法,较为繁琐,最为重要的是发送推送需要特定的服务端,通过JPush,不仅可以简化客户端的接收,还可以通过控制台或者API实现通知的发送. 首先注册JPush ...
- 李洪强iOS之集成极光推送三iOS集成指南
李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...
- java集成jpush实现客户端推送
代码地址如下:http://www.demodashi.com/demo/13700.html 前言 java 集成jpush 实现客户端推送 一.准备工作 开发环境: jdk1.6 Eclipse ...
- 第十五章:集成JPUSH
如果不想自己搭建push server,则可以借助于第三方的api来实现push的功能,本文主要介绍ionic如何集成jpush. 具体步骤如下: 创建ionic应用:ionic_jpush. 申请j ...
- JAVA集成JPush
本篇集成为web项目手动集成JPush 一.获取AppKey.Master Secret https://docs.jiguang.cn 成为极光用户创建一个应用拿到(AppKey.Master Se ...
- iOS集成丁香园DXY OAuth 登陆 swift代码示例
问:iOS集成OAuth登陆分几步? 答:和把大象放冰箱里一样. 第一步:打开webview,跳转到登陆页面: let url = "https://auth.dxy.cn/conn/oau ...
- iOS集成支付宝
需要企业和支付宝签约这个是需要审核的[3天左右 以邮件形式告知你] 使用支付宝进行一个完整的支付功能,大致有以下步骤: 1>先与支付宝签约,获得商户ID(partner)和账号ID(sell ...
- iOS 集成Weex入门教程
前言 自Weex发布伊始, 其口号 "Write Once, Run Everywhere"就吸引了大批前端与客户端程序猿纷纷入坑, 我也不能独善其中. 就我目前所学习Weex的经 ...
- iOS 集成百度地图 位置偏移问题
iOS 集成百度SDK 请参考 百度地图官方文档 ,这里不就多啰嗦了 本文介绍的是在百度地图上根据经纬度,自定义气泡时,气泡位置的偏移,在我们天朝这种事是很常见的,也见怪不怪了,在项目中使用的百度地图 ...
随机推荐
- Selenium+java - 截图操作
写在前面 自动化测试过程中,运行失败截图可以很好的帮我们定位问题,因此,截图操作也是我们自动化测试中的一个重要环节. 截图方法 1.通过截图类TakeScreenshout实现截图 特点:截取浏览器窗 ...
- Vue系列:.sync 修饰符的作用及使用范例
作用:对传递给子组件的 prop 数据进行“双向绑定”.(正常情况下,prop 的数据都是单向数据流) 代码参考如下: 父组件部分 子组件部分
- 【0806 | Day 9】异常处理/基本的文件操作
一.异常处理 异常即报错,可分为语法异常和逻辑异常 1. 语法异常 举个栗子 if #报错 syntaxerror 0 = 1 #报错 syntaxerror ... 正经地举个栗子 print(1) ...
- 浅谈osi模型 三次握手 四次挥手 ddos攻击原理
C/S B/S 架构 C:client 端 B:browser 浏览器 S:server 端 C/S架构,基于客户端与服务端之间的通信 例如:QQ,抖音,快手,微信,支付宝等等 优点:个性化设置,响应 ...
- jmeter界面字体修改
实际应用中发现,同样是win10系统,显示器屏幕尺寸大小不同,jmeter界面字体展示也不一样,标准屏幕还可以,大屏幕下不能自动适应屏幕大小放大而且还变的更小.在查询解决方法时,发现有朋友出现类似情况 ...
- 从原理层面掌握@ModelAttribute的使用(核心原理篇)【一起学Spring MVC】
每篇一句 我们应该做一个:胸中有蓝图,脚底有计划的人 前言 Spring MVC提供的基于注释的编程模型,极大的简化了web应用的开发,我们都是受益者.比如我们在@RestController标注的C ...
- 优雅的在WinForm/WPF/控制台 中使用特性封装WebApi
优雅的在WinForm/WPF/控制台 中使用特性封装WebApi 说明 在C/S端作为Server,建立HTTP请求,方便快捷. 1.使用到的类库 Newtonsoft.dll 2.封装 HttpL ...
- thinkphp model 创建之后访问后的错误···
解决:在php.ini里边先开启mysql的pdo扩展
- Java网络编程 -- BIO 阻塞式网络编程
阻塞IO的含义 阻塞(blocking)IO :阻塞是指结果返回之前,线程会被挂起,函数只有在得到结果之后(或超时)才会返回 非阻塞(non-blocking)IO :非阻塞和阻塞的概念相对应,指在不 ...
- 再见 Spring Boot 1.X ,Spring Boot 2.X 走向舞台中心
2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束. 其实早在2018年7月30号,Spring 官方就已经 ...