推送 iOS 10
1:APNs通知与应用内消息对比
极光文档上面是这么写的
后来更直接的说法是:
2:下面是介绍app不同状态下面接受到通知调用的方法:
// 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(UNNotificationPresentationOptionNone); // 需要执行这个方法,选择是否提醒用户,有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];
}
NSLog(@"%@",response.notification.request.content.body);
completionHandler(); // 系统要求执行这个方法
}
//程序已经杀死
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Bugly startWithAppId:@"49c45f90fe"];
//远程推送发送过来json字符串
NSDictionary *userinfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
通知的内容存在于launchOptions中
NSDictionary *userinfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
userinfo[@"aps"][@"alert"]
里面可以获取到通知的内容
//静默通知(静默通知app死掉的时候不进行)
静默推送:收到推送(没有文字没有声音),不用点开通知,不用打开APP,就能执行
使用静默通知的关键意义是程序在后台的时候能够在不点击通知的(应为静默通知本身就没有通知栏)敲敲的执行后台的代码
不管使用哪种三方的推送(极光,融云,个推,pushmeBaby),一定要设置
一定要加"content-available" : 1 (只设置这个字段的话,可以实现后台推送完成接收)
还有
sound,alert badge也不能加,加入的话也是静默推送,可以测试时添加
实例静默推送内容
因为静默推送的关键意义在于后台的推松,所以一定要记得打开app后台推送的功能
如果升级了ios10,一定要按照最新的文档进行集成
注意:
1:应当提供
- (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 iOS6
[JPUSHService handleRemoteNotification:userInfo];
}
下面的方法会被上面的方法挤掉
如果想收到静默通知,必须实现上面的方法而不是下面的
即静默采用ios 7的方法替换原来的
2:关于证书:如果自己公司的后台集成了极光推送,应当提供好推送的两个证书的p12文件
生产证书不一定要上线
3:判断程序在前台的方法
[UIApplication sharedApplication].applicationState == UIApplicationStateActive
4:极光推送不展示小红点
application.applicationIconBadgeNumber = 0;
[JPUSHService setBadge:0];(推向极光的服务器)
关于通知的补充:
1:收到前台通知调用的方法
2:通知上面添加的点击事件,通过通知设置分类
点击上面不同的按钮调用下面的方法,通过identifier进行区分
3:
4.继承公司自己的推送只需要
appdelegate里面设置appid即可
5:后台进行的静默通知,应该进行流量的判断
下面是上网查的某位大神的关于静默推送的相关知识点(只是借鉴一下)
注意:关于设置badgeNumber
关于别名:
设置别名退出的时候记得清空别名
[JPUSHService setTags:nil alias:[RFMyInfoSaveTool shareMyInfoTools].userName fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
NSLog(@"%d-------------%@,-------------%@",iResCode,iTags,iAlias);
}];
2.设置监听登录策划成功的方法:
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(setAlis) name:kJPFNetworkDidLoginNotification object:nil];
在登录成功的通知方法里面设置别名
但是为了防止登录之后已经注册好了,但是登录者的手机号还未上传进来,我们应当到登录成功的回调里面再次设置别名
//覆盖可能为空的别名
[JPUSHService setTags:nil alias:[RFMyInfoSaveTool shareMyInfoTools].userName fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
NSLog(@"%d-------------%@,-------------%@",iResCode,iTags,iAlias);
}];
记得退出app的时候清空别名,不然退出了app还能收到通知,不符合产品的要求
3.发布的时候记得做的事情
1>记得将推送的发布证书转成p12传给极光的后台,如果是自己的后台进行维护的,就给自己的后台
2>记得打开xcode的推送的模式
3>测试推送ipa的时候记得选中极光的开发模式,否则ipa是收不到推送通知的
推送 iOS 10的更多相关文章
- 阿里云移动推送 ios项目添加SDK步骤
添加阿里云Pods仓库和各产品SDK Pod依赖,配置步骤如下: 1. CocoaPods集成添加阿里云Pods仓库,Podfile添加: source 'https://github.com/ali ...
- [转帖]微软宣布即将开始大规模推送Windows 10 V1903重大版本更新
微软宣布即将开始大规模推送Windows 10 V1903重大版本更新 https://www.cnbeta.com/articles/tech/894303.htm 微软要批量更新 1903了 bu ...
- 极光推送iOS SDK教程
iOS SDK 调试指南 iOS 调试思维导图 2 确认证书 请到"应用详情页面"确认证书可用性: 3 开发环境测试 在对 JPush iOS 开发环境进行测试前,请确保 3 个 ...
- .net平台推送ios消息
1,ios应用程序中允许向客户推送消息 2,需要有苹果的证书以及密码(怎么获取,网上搜一下,需要交费的) 3,iphone手机一部,安装了该ios应用程序 4,.net 项目中引用PushSharp. ...
- 【转载自友盟消息推送iOS文档】在appDelegate中注册推送
1.2 基本功能集成指南 提示 请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret 导入SDK 下载 UMessage_Sdk_All_x.x.x.zip并解压缩 导入 ...
- 百度云推送----iOS
前言 记录一下这几天学习的百度推送,觉得这个东西弄的还挺糟心的,好多注意的地方 正文 1.先申请一个百度开发者账号 http://push.baidu.com/fc 2.创建一个新应用,并应用配置 3 ...
- 远程推送-----iOS
前言 说一下我了解的推送 正文 APNs--------Apple Push Notification service 1 远程推送的大概流程及其原理 我们的设备联网时(无论是蜂窝联网还是Wi-Fi联 ...
- 在. net平台下,推送IOS,Android,Windows Phone消息
1,新建项目,在项目中添加引用,dll文件已经上传在百度网盘,点击下载 2,引入命名空间 using PushSharp; using PushSharp.Android; using PushSha ...
- 微软将于12月起开始推送Windows 10 Mobile
[环球科技报道 记者 陈薇]据瘾科技网站10月8日消息,根据微软Lumia官方Faceboo发布的消息,新版系统Windows 10 Mobile 将会12月起陆续开始推送. 推送的具体时程根据地区. ...
随机推荐
- pacman -Syu : key could not be looked up remotely.
# sudo pacman -Syu...error: key "5F702428F70E0903" could not be looked up remotelyerror: r ...
- 【转】el表达式的判断符
el表达式一般不直接用==判断是否相等 != > < >= <=之类的表示不等于 大于 小于 大于等于 小于等于,而是使用字母表示的表达式,他们的表示如下: == eq 等于 ...
- 【转载】彻底卸载MYSQL的方法
1.控制面板里的增加删除程序内进行删除 2.删除MySQL文件夹下的my.ini文件,如果备份好,可以直接将文件夹全部删除 3.开始->运行-> regedit 看看注册表里这几个地方删除 ...
- JQ判断复选框是否选中
方法一: if($('#checkbox').is(':checked')) {} 方法二:if ($('#checkbox').attr('checked')) {} 方法三:if ($(" ...
- pod install后无反应
参考这篇文章 http://akinliu.github.io/2014/05/03/cocoapods-specs-/
- sql参数化查询in的参数
private Query setParameter(Query query, Map<String, Object> map) { if (map != null) { Set<S ...
- AngularJS-chapter2-7-前端路由
Form表单提交会导致页面之间的切换,没法实现单页应用 Ajax请求不会留下History记录(在后台管理系统,没有后台历史记录还可以) ,但在网络型应用或门户型应用(用户没有办法给改页面加标签或分享 ...
- iOS返回一个前面没有0,小数点后保留两位的数字字符串
/* * 处理一个数字加小数点的字符串,前面无0,保留两位.网上有循环截取的方法,如果数字过长,浪费内存,这个方法在优化内存的基础上设计的. */ -(NSString*)getTheCorrectN ...
- iOS图片编辑功能实现
图片加标签:标签可以编辑 https://github.com/shumingli/waterMark 1. 编辑效果;图片可以放到.缩小.旋转 2. 保存相册效果
- 磁盘阵列(RAID)实例
raid技术分类可以分为基于软件raid技术和基于硬件raid技术 raid又分为raid-0.raid-1.raid-5和raid-10 Raid有”廉价磁盘冗余阵列”的意思,就是利用多块廉价的硬盘 ...