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的更多相关文章

  1. 阿里云移动推送 ios项目添加SDK步骤

    添加阿里云Pods仓库和各产品SDK Pod依赖,配置步骤如下: 1. CocoaPods集成添加阿里云Pods仓库,Podfile添加: source 'https://github.com/ali ...

  2. [转帖]微软宣布即将开始大规模推送Windows 10 V1903重大版本更新

    微软宣布即将开始大规模推送Windows 10 V1903重大版本更新 https://www.cnbeta.com/articles/tech/894303.htm 微软要批量更新 1903了 bu ...

  3. 极光推送iOS SDK教程

    iOS SDK 调试指南 iOS 调试思维导图 2 确认证书 请到"应用详情页面"确认证书可用性: 3 开发环境测试 在对  JPush iOS 开发环境进行测试前,请确保 3 个 ...

  4. .net平台推送ios消息

    1,ios应用程序中允许向客户推送消息 2,需要有苹果的证书以及密码(怎么获取,网上搜一下,需要交费的) 3,iphone手机一部,安装了该ios应用程序 4,.net 项目中引用PushSharp. ...

  5. 【转载自友盟消息推送iOS文档】在appDelegate中注册推送

    1.2   基本功能集成指南 提示 请先在友盟的消息推送管理后台中创建App,获得AppKey和AppSecret 导入SDK 下载 UMessage_Sdk_All_x.x.x.zip并解压缩 导入 ...

  6. 百度云推送----iOS

    前言 记录一下这几天学习的百度推送,觉得这个东西弄的还挺糟心的,好多注意的地方 正文 1.先申请一个百度开发者账号 http://push.baidu.com/fc 2.创建一个新应用,并应用配置 3 ...

  7. 远程推送-----iOS

    前言 说一下我了解的推送 正文 APNs--------Apple Push Notification service 1 远程推送的大概流程及其原理 我们的设备联网时(无论是蜂窝联网还是Wi-Fi联 ...

  8. 在. net平台下,推送IOS,Android,Windows Phone消息

    1,新建项目,在项目中添加引用,dll文件已经上传在百度网盘,点击下载 2,引入命名空间 using PushSharp; using PushSharp.Android; using PushSha ...

  9. 微软将于12月起开始推送Windows 10 Mobile

    [环球科技报道 记者 陈薇]据瘾科技网站10月8日消息,根据微软Lumia官方Faceboo发布的消息,新版系统Windows 10 Mobile 将会12月起陆续开始推送. 推送的具体时程根据地区. ...

随机推荐

  1. Java温故系列之web项目复习

    如果从外面导入项目 操作方法为: File->Import -->General-->Existing Project into Workspace 搭建sqlserver数据库连接 ...

  2. SqlServer实现先将所有数据排好序再进行分页

    平时,我们对数据进行分页,然后将分页后的数据再进行排序输出.这样做只是针对每次请求,也就是前TOP个数据进行了排序,并不是将数据库中的所有的数据进行了排序.当我们需要将数据库中的所有数据排序后在进行分 ...

  3. 我刚知道的WAP app中meta的属性

    之前我一直做的都是WEB前端开发,来北京以后面试了一个移动前端开发,WAP前端开发. 其实在原来公司的时候也做过这方面的开发,可面试的时候面试官问我,要想强制让文档与设备的宽度保持1:1,mate标签 ...

  4. cnblogs,我回来了

    之前是在Github上搭了个博客,原因只有一个:可以弄个比较个性的域名,逼格高. 不过用起来倒是麻烦,一是经常纠结自己的主页是不是不够逼格?二就是身在墙内,访问速度不理想. 所以,还是安心的在这里,写 ...

  5. oracle number型日期转date型日期

    在搞数据库时,发现有这样的一个字段,类型是NUMBER(38),查看了一下里面的数据,都是这样的, 13239576781141321326994295132212930680413221297162 ...

  6. OpenLayers Map理解

    1,视口坐标的原点在左上角,水平向右为x轴正向,垂直向下为y 轴正向:2,地图坐标原点为初始图层的中心点,水平向右为x轴正向,垂直向上为y轴正向:3,视口中心点永远与地图中心点重合,不一定与瓦片中心点 ...

  7. mysql自动添加最后修改时间

    字段不为空 NOT NULL 类型 :timestamp 默认值 :CURRENT_TIMESTAMP

  8. 利用cubieboard设置samba打印服务器

    #注意安装下面软件前,先将cubieboard的动态地址改为静态地址! apt-get install samba #安装samba vi /etc/samba/smb.conf //配置 workg ...

  9. 多媒体(1):MCI接口编程

    目录 多媒体(1):MCI接口编程 多媒体(2):WAVE文件格式分析 多媒体(3):基于WindowsAPI的视频捕捉卡操作 多媒体(4):JPEG图像压缩编码 多媒体(1):MCI接口编程

  10. DNS服务器原理

    19.1 什么是DNS   主机名自动解析为 IP 就很重要!那就是 DNS.   19.1.1 用网络主机名取得IP的历史渊源   单一档案处理上网的年代: /etc/hosts   利用某些特定的 ...