JPUSH bug汇总

1.服务端Options 参数中的apns_production 没有设置对应的生产环境

    导致测试的时候可以顺利推送  但是上线之后推送功能失效

2.我们在做推送的时候需要关心的一些问题

关键绩效指标(KPI:Key Performance Indicator)

   新增用户、活跃用户、启动次数

这些指标是KPI的主要评估标准;关注这些指标的每日趋势,您可以了解到应用每天发展是否正常、是否符合预期。
    留存用户、留存率、流失用户


1. 通知可以在app关闭的情况下收到,而消息只能当应用打开(Android)甚至仅在前台(iOS)时,才会收到。


3.定时发送推送

要用到

API Push Schedule (修改了HTTP协议头)

http://docs.jpush.io/server/rest_api_push_schedule/

  1. AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
  2. manager.securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
  3. manager.requestSerializer = [AFJSONRequestSerializer serializer];
  4. manager.responseSerializer = [AFJSONResponseSerializer serializer];
  5. [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
  6. [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];   

    来源: http://blog.csdn.net/dwarven/article/details/37744617

为什么集成成功后iOS收不到推送通知?

请确保:

  • 推送的key和应用集成的key是同一个;
  • iOS应用程序的证书和你上传到JPush Portal上上传的证书是同一个;
  • 推送时指定的iOS推送环境和应用证书是同一个环境。

温馨提示:目前V3 api推送可以通过参数apns_production来指定推送环境:false为开发环境,true为生产环境。V3 api不带此参数则默认为生产环境,V3 api封装的sdk 默认为开发环境。

为什么启动的时候出现 Did Fail To Register For Remote Notifications With Error的错误

程序运行的时候出现下面的错误信息:

did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的“aps-environment”的权利字符串" UserInfo=0x1c55e000 {NSLocalizedDescription=未找到应用程序的“aps-environment”的权利字符串}

这个是由于你的Provisioning Profile文件,不具备APNS功能导致的。请登陆Apple Developer 网站设置好证书,更新Provisioning Profile,重新导入Xcode。

或参考:http://blog.csdn.net/stefzeus/article/details/7418552

如何在接收到 APN 的时候获取 APN 消息内容并进行跳转或做出响应处理?

获取 APNs 推送内容

如何关闭 APN  推送?

关闭推送有以下两种方式关闭:

1.在iOS系统设置的通知设置中更改对应app的推送设置(推荐);

2.在代码中调用 [[UIApplication sharedApplication] unregisterForRemoteNotifications];

对应以上关闭方式的重新打开推送方法:

1.在iOS系统设置的通知设置中修改对应app的推送设置;

2.在代码中重新调用 [APService registerForRemoteNotificationTypes:];

App badge number(角标)如何更改与清空?

JPush 网站上推送 iOS 通知时,可选设置里面有选项可以指定 badge 的参数的值,如:1或"+1"。

api上指定badge的参数请看:Push-API-v3#API-v3-ios,客户端上报badge到JPush服务器的接口请看:设置badge

Icon Badge number 的清空方法:

  1. APN 推送内容指定 badge number 为 0;
  2. 在代码中使用如下代码清空 badge number:  [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

注意:badge累加只能通过v3api推送,且只有1.7.4版本以上才能支持。

为何推送一条 APN 后,点击通知中心的 APN 通知打开 App,可是 APN 通知在通知中心依然存在而未被删除?

如果推送 APN 时,Badge number 被指定为0 ,则可能出现 APN 消息在通知中心被点击后,尽管调用了   [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 但 APN 消息在通知中心不会被删除的情况。 这种情况可以按如下代码调用以清除通知中心的 APN 通知。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];

如果仍有其他消息,则考虑清除 local notification 通知。( [[UIApplication sharedApplication] cancelAllLocalNotifications] )

出现Not get deviceToken yet. Maybe: your certificate not configured APNs?...错误日志时如何排除问题?

如果出现上述日志,则说明一段时间内都无法获取device token,那么:

1.确认你的app配置了apns权限,如果未配置apns权限,则应该会出现此错误提示

2.确认你的app运行在ios真机而非模拟器上,且通知中心中对应app的通知权限没有完全关闭(alert/sound/badge至少有一个权限是打开的)。

3.确认info.plist上的BundleID是否和上传到JPush官网的p12证书的BundleID一致,BuildSetting里面的Provision Profile是否属于JPush官网上显示的BundleID,CodeSigning选择的证书是否from你所选择的Provision Profile的证书。

4.确认你的网络状况,与apple的服务器的连接是通过tcp的 5223端口连接,确认你网络的对应端口是否可用,可通过下列命令来确认这点:

telnet 1-courier.push.apple.com 5223

5.在代码中可在以下两个函数中断点以确认device token的获取状态。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken;

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;

如果app运行进入didFailToRegisterForRemoteNotificationsWithError 则说明app的APNS权限问题或者app运行在模拟器,参考 证书设置文档

如果app运行进入didRegisterForRemoteNotificationsWithDeviceToken 则说明运行正常,请确认你在此函数中的代码中有将token传递给jpush的调用:

[APService registerDeviceToken:deviceToken];

6.如果以上两个registerRemoteNotification的函数都未进入, 请确认你的代码中有注册申请apns的函数调用:

[APService registerForRemoteNotificationTypes:];

6.如果上述情况都已确认且未进入第4步的任意回调函数,则可以判断无法获取token的原因在于设备与apple的网络连通性问题(注:一个设备只有在未申请过token的情况下才会需要与apple的网络交互来获取token,已经获取过某一环境token的设备在无网络的情况下也能获取到对应环境的token(环境分为 开发/生产)),这种情况下切换网络能够在大部分情况下解决此问题。

7.如果仍然有问题,请将上述步骤的结果以邮件附件的形式发送到JPush支持邮箱,我们将协助你解决此问题。

上传到appStore的版本为什么收不到推送?

1.请确认xcode选择的生产证书和上传的证书的bundleid一致;

2. 如果是在jpush网站上推送,请确认新建通知时推送对象是否选择了生产环境,如图:

3.如果使用了V2 api 的apns_production参数,值是否为:1;如果使用了V3 api 的apns_production参数,值是否为:true。

iOS 平台上传证书一直为未通过状态

证书上传未通过的原因一般有:

1.当前上传的p12证书密码输入有误;

2. 证书导出的时候展开了证书,把个人私钥导了出来,导证书的时候请不要展开证书;

3.当前上传的证书环境不对,如:在上传开发证书的地方上传了生产证书;

4.该证书已在本账号的其它应用使用;

5.现上传的证书与当前应用已上传成功的证书的bundle id不一致。

具体请看上传后显示的错误输出内容。

为什么日志里面会打印:You‘ve implemented -[<UIApplicationDelegate>application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.

这个主要是提示开发者如果要支持UIBackgroundModes,需要开启Remote notifications,具体操作可以看:iOS 7 Background Remote Notification

来源: http://docs.jpush.cn/pages/viewpage.action?pageId=7864782

4.有一点需要注意如果不通过后台连接极光推送,极光推送的PushConfig文件不需要配置也可以推送成功;

5.获取用户停留在某个页面的时间

应在所有的需要统计得页面得 viewWillAppear 和 viewWillDisappear 加入 startLogPageView 和 stopLogPageView 来统计当前页面的停留时间。

来自为知笔记(Wiz)

时间: 2024-10-09 20:03:16

JPUSH bug汇总的相关文章

Android Bug 汇总

1 问题: FragmentStatePagerAdapter+viewpager第二次进入该fragment不显示数据 解决方法: 在含有ViewPager的Fragment的onCreateView方法中添加代码: if (view != null) { ViewGroup parent = (ViewGroup) view.getParent(); if (parent != null) { parent.removeView(view); } return view; } Android

Android与Asp.Net Web服务器的文件上传下载BUG汇总【更新】

遇到的问题: 1.java.io.IOException: open failed: EINVAL (Invalid argument)异常,在模拟器中的sd卡创建文件夹和文件时报错 出错原因可能是:(1)文件名称中含有不符合规范的字符,比如“:”,“?”或者空格等.(2)需要先创建文件夹目录再创建文件,不能直接创建文件. 2. android.os.NetworkOnMainThreadException异常,从服务器请求数据后,写入文件时报错 出错原因:在主线程内执行了访问http的操作,最

移动端常见bug汇总

点击样式闪动 Q: 当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背景. A:根本原因是-webkit-tap-highlight-color,这个属性是用于设定元素在移动设备(如Adnroid.iOS)上被触发点击事件时,响应的背景框的颜色.建议写在样式初始化中以避免所以问题:div,input(selector) {-webkit-tap-highlight-color: rgba(0,0,0,0);}另外出现蓝色边框:outline:none

bug汇总

12/15 EC Final I题,求2的幂次中间变量tmp可能爆int,当时想着数据都是int型,每次乘个基数,一大于n(int)就break,应该没事:真相就是1e5乘1e5就gg了.幸好队友试了1e5的数据找到问题. E题,dfs时第一条路长度是没有存起来的.然后改了这个问题之后整个path数组其实都往前移了一位,所以后面也要相应地+1 12/13 数据结构实验代码,malloc时本来是sizeof(E)写成sizeof(*E),然后就越界访问,蜜汁错误找不出来 这个想法是从19/12/1

IE6 BUG 汇总

1.IE6双倍边距bug 当页面内有多个连续浮动时,如本页的图标列表是采用左浮动,此时设置li的左侧margin值时,在最左侧呈现双倍情况.如外边距设置为10px, 而左侧则呈现出20px,解决它的方法是在浮动元素上加上display:inline;的样式,这样就可避免双倍边距bug. 2.3像素问题及解决办法 当浮动元素与非浮动元素相邻(注意这里的相邻可以是纵向的也可以是横向的)时,这个3像素的Bug就会出现,它会偏移3像素.实际表现就是两个元素之间产生了一道缝隙!解决方法很简单,将两个元素都

UI测试常见BUG汇总

在大多数开发.测试眼中,UI测试的重要性远小于功能测试.性能测试等,但只要够细心,总能发现一些UI bug或者UI 可以改进的地方提高用户体验. 录入界面 1.1 输入字段要完整,且要与列表字段相符合(参照数据库进行检查) 1.2 必填项一律在后面用*表示(必填项为空在处理之前要有相关的提示信息) 1.3 字段需要做校验,如果校验不对需要在处理之前要有相关的提示信息 (1) 长度校验 (2) 数字.字母.日期等等的校验 (3) 范围的校验 1.4 录入字段的排序按照流程或使用习惯,字段特别多的时

IE9+ BUG汇总

CSS透明没有继承 css opacity is not inherited in internet explorer 今儿遇到一个问题源于同事写的一个页面,发现父级明明 opacity:0 了,但子级还显示,原来是 IE9+ 的一个 BUG:影响版本: IE9/IE10/IE11 解决方案,请参考:http://makandracards.com/makandra/21779-css-opacity-is-not-inherited-in-internet-explorer Elements

ie6,ie7,ie8 css bug汇总以及兼容解决方法

1:li边距“无故”增加 任何事情都是有原因的,li边距也不例外. 先描述一下具体状况:有些时候li边距会突然增 加很多,值也不固定(只在IE6/IE7有这种现象),让人摸不着头脑,仔细“研究”发现是由于其低级元素ul的padding引 起,padding的上下值对li有影响,左右无影 响.所以只好笨手笨脚地把padding去掉,换成margin.这是能解决问题,但往往不是我们想要的结果,或许 还会引起其他不必要的怪现象. 解决这个问题的方法,其实很简单,既然是有ul引 起的,就设置ul的显示形

web开发常见bug汇总

1.在做使用struts2进行文件上传时总是出现 java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream于是google了一下,网上90%是说没导入commons-io包,但是我在项目里明明是已经把这个包导入了,也有兄弟说可能是版本的问题,但换了几个commons-io版本都还是报这个错误啊,我都找了两天这个问题了,头都疼了.因为项目中要用到这个上传,请高手们出手救救小弟. 回答1