iOS极光推送常见问题_极光iosurl已存在-程序员宅基地

技术标签: iOS  

iOS 常见问题


iOS 9集成

iOS 9变动影响SDK部分:

  • 增加了bitCode编码格式,当SDK不支持bitCode时,用户集成时无法开启bitCode选项.
    • 现象:用户集成SDK后无法编译通过,错误日志里包含了bitCode的相关错误信息
  • 默认使用https连接,如果请求为http,需要手动配置plist来支持http服务,当前我们的服务器请求都走http服务。
    • 现象:用户集成SDK后,所有JPush相关的http服务都提示连接错误或者连接超时,可能是此问题。

bitCode解决方式

JPush iOS SDK v1.8.7 及以上版本的SDK,已经增加对 iOS 9 新特性 bitcode 的支持.

Https解决方式

SDK未提供https地址版本时

  1. 需要用户主动在当前项目的Info.plist中添加NSAppTransportSecurity类型Dictionary。
  2. 在NSAppTransportSecurity下添加NSAllowsArbitraryLoads类型Boolean,值设为YES


为什么iOS收不到推送消息?

如果你确认 appKey 在 SDK 客户端与 Portal 上设置是一致,其他环节也按照文档正确地操作。但还是收不到推送消息。那么,有一定的可能性,是你在 Portal 上上传的证书,不是 APNs (Push) 证书。推送时指定的iOS推送环境和应用证书是同一个环境。

请参考iOS 证书设置指南再次检查证书选择是否正确。

请注意:iOS能接受消息的必要条件是:应用程序的证书要和你上传到jpush portal上的证书对应,如果你的程序是直接在xcode上运行的,你的应用部署环境必须是开发状态才能收到APNS消息。

温馨提示:目前api推送的时候可以通过参数apns_production可以指定推送环境,false为开发环境,true为生产环境。V3 api不带此参数则默认为生产环境,V3 api封装的sdk 默认为开发环境。如果api有传apns_production则以此值为准,否则以应用详情的部署环境为准。


为什么启动的时候出现 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累加只能通过v3 api推送,且只有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. 确认你的网络状况,与apple的服务器的连接是通过tcp的 5223端口连接,确认你网络的对应端口是否可用,可通过下列命令来确认这点:

    telnet 1-courier.push.apple.com 5223
    
  4. 在代码中可在以下两个函数中断点以确认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];
    
  5. 如果以上两个registerRemoteNotification的函数都未进入, 请确认你的代码中有注册申请apns的函数调用:

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

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


上传到appStore的版本为什么收不到推送?
  1. 请确认xcode选择的生产证书和上传的证书的bundleid一致;
  2. 如果是在jpush网站上推送,请确认新建通知时推送对象是否选择了生产环境;
  3. 如果是v3 api推送,请确认是否使用了apns_production参数,值是否为:true;如果没有使用apns_production参数请确认jpush网站上该应用的部署环境是否已经切换到生产环境。


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

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

  • 1.密码错误;
  • 2.上传的apns证书环境不一致;
  • 3.上传的不是apns证书,可能是开发者证书也可能是apns证书那里导出来的私钥

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


为什么日志里面会打印: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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Dayang_Lu/article/details/49796891

智能推荐

TypeError: The ‘compilation‘ argument must be an instance of Compilation_the 'compilation' argument must be an instance of -程序员宅基地

文章浏览阅读3.8k次。快应用出现 TypeError: The 'compilation' argument must be an instance of Compilation_the 'compilation' argument must be an instance of compilation

处理器中基于PCIe Bus的NTB(Non-Transparent Bridge)支持_pcie ntb-程序员宅基地

文章浏览阅读1.5w次。有些行业应用中,会使用到计算机集群设计,或者两个Node之间协同工作的设计,比如SMP的设计,NUMA的设计等,免不了需要将两个或者多个Node直接的高速总线link到一起。在Intel和AMD的架构设计中引入了 QPI总线和HT总线。这里主要描述一下另外一种形态基于PCIe的NTB技术。Non-Transparent Bridge,非透明桥,这个在intel的某些北桥(处理器)中已经已经_pcie ntb

数字频率计的功能及工作原理-程序员宅基地

文章浏览阅读2.4w次,点赞8次,收藏82次。2.1数字频率计功能概述 数字频率计数器的基本功能是测量一个频率稳定度高的频率源的频率。通常情况下计算每秒内待测信号的脉冲个数,此时我们称闸门时间为1秒。闸门时间也可以大于或小于一秒。闸门时间越长,得到的频率值就越准确,但闸门时间越长则没测一次频率的间隔就越长。闸门时间越短,测的频率值刷新就越快,但测得的频率精度就受影响。本数字频率计是用数字显示被测信号频率的仪器,被测信号可以是正弦波,方波或其它周期性变化的信号。2.2 基本工作原理及设计思路根据频率计设计的设计要求,我们可将整个电路系统划分._数字频率计

SparkSQL的Shuffle分区设定及异常数据处理API(去重、缺失值处理)_spark dropduplicates 不同分区怎么解决-程序员宅基地

文章浏览阅读441次。在Spark SQL中,当Job中产生Shuffle时,默认的分区数(spark.sql.shuffle.partions)为200,在实际项目中要合理的设置。在允许spark程序时,查看WEB UI监控页面发现,某个Stage中有200个Task任务,也就是说RDD有200分区Partion。功能:如果数据中包含null通过dropna来进行判断,符合条件就删除这一行数据。功能:对DF的数据进行去重,如果重复数据有多条,取第一条。功能:根据参数的规则,来进行null的替换。_spark dropduplicates 不同分区怎么解决

序列模型(RNN-GRU-LSTM-BRNN-Deep RNN)_brnn 向量 序列-程序员宅基地

文章浏览阅读5.4k次,点赞2次,收藏16次。LSTM原理,应用。从循环神经网络(Recurrent Neural Network,RNN)可以通过许多不同的方式建立,但就像几乎所有函数都可以被认为是前馈网络,基本上任何涉及循环的函数可以被认为是一个循环神经网络。它的基本结构以及其展开的理解如下图所示: 同一网络被视为展开的计算图,其中每个节点现在与一个特定的时间实例相关联................_brnn 向量 序列

什么是深度学习,深度学习和机器学习有什么关系?_深度学习,是机器学习的一种特定技术,称其为深度,是因为他有()结构。-程序员宅基地

文章浏览阅读3.2k次。深度学习的概念源于人工神经网络的研究。含多隐层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。晦涩难懂的概念,略微有些难以理解,但是在其高冷的背后,却有深远的应用场景和未来。深度学习是实现机器学习的一种方式或一条路径。其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据。比如其按特定的物理距离连接;..._深度学习,是机器学习的一种特定技术,称其为深度,是因为他有()结构。

随便推点

别光看世界杯 7月还有一场音视频技术盛宴等着你-程序员宅基地

文章浏览阅读226次。在全世界球迷的瞩目下,2018世界杯在上周激情上演,相信接下来的一个月时间里无数球迷又将守在电视前为自己喜欢的球队摇旗呐喊。当然,在移动互联网发达的今天,即使不在电视前,..._移动咪咕 张云天

PyQt5 —— 控件_pyqt5上传控件-程序员宅基地

文章浏览阅读257次。由于最近在学习pyqt5的相关知识,在网上找了几篇教程看,于是就写了这篇学习笔记。本文只是一些案例的代码以及演示,详细的讲解请看原文。原文链接:https://zetcode.com/gui/pyqt5/中文翻译:http://www.360doc.com/content/19/1022/14/12906439_868371487.shtml文章目录1、QCheckBox2、切换按钮3、滑块4、进度条5、日历6、图片7、行编辑8、QSplitter9、下拉选框1、QCheckBoxQCheck._pyqt5上传控件

全国首届“公安实战声纹和语音应用技术研讨会”成功举办_马鲁朋 菏泽-程序员宅基地

文章浏览阅读1.2k次。11月24日-25日,由中国人民公安大学网络空间安全与法治协同创新中心主办、厦门快商通科技股份有限公司承办的全国首届“公安实战声纹和语音应用技术研讨会”在厦门成功召开。会上,与会嘉宾联合宣布成立“公安实战声纹语音案件技术交流联盟”,共同搭建高质量、高水平的系列化交流平台,持续为智慧警务建设注入新动能。厦门市公安局刑事侦查支队技术处处长任松、中国人民公安大学网络空间安全与法治协同创新中心秘书长..._马鲁朋 菏泽

MATLAB中通讯常用的fread和fscanf的使用心得_matlabfread和fscanf区别-程序员宅基地

文章浏览阅读5.8k次,点赞2次,收藏11次。相信大家都都时不时的会遇到有关MATLAB中的串口或者网口的通讯,其中都会涉及到fread或者fscanf 的使用,接下,作者将首先参考matlab给出的对fread和fscanf的文档,并且做出相关的理解。1、freadstep 1 文档内容fileID = fopen('nine.bin','w');fwrite(fileID,[1:9],'uint16'); %其中unit16,是指传入的..._matlabfread和fscanf区别

逆向_base64_rc4_----笔记_mdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmd-程序员宅基地

文章浏览阅读1k次。新人…学校比赛,没什么经验,上去见见世面某公司的月赛题 资源就不放了,只是当笔记Ida打开 有点小陷阱 巧妙的堆栈运用导致载入ida分析不了 得不到函数的边界比较幸运win32的程序od打开走一遍流程感受下00AD12E7 . 52 push edx00AD12E8 . 68 C821AD00 push 5ba358a4.00AD21C8 ..._mdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdawmdaw

致 Tapdata 开源贡献者:聊聊 2022 年的进展和新一年的共建计划-程序员宅基地

文章浏览阅读781次。在内、外部开发者的合力之下,过去一年 Tapdata 新增数据源近20个,实现了60+数据源的接入能力。一个人可以走得很快,一群人可以走得更远,2023年期待与您共创更受欢迎的开源项目。_tapdata