极光推送demo测试流程,测试过程中可能遇到的问题和解决方法

创建开发证书,创建描述文件,极光推送页面设置,Xcode工程设置,真机测试

步骤1:创建开发证书

<1>.登陆 https://developer.apple.com进入开发者中心

<2>进入创建和描述文件页面

<3>.点击App IDs 创建一个app id

<4>.进入创建页面以后在App ID Description输入app id 的名称

<5>.填入一个唯一的app id (注:推送的app id 只能创建一个唯一的,不能使用通用的。)

Explicit App ID是一个唯一的app id Wildcard App ID是一个通用的app id (可以用*代替任意内容)

<6>.勾选Push服务

<7>.下一步,此时服务的选项是黄色的,代表需要创建对应的证书,(证书下面创建,先完成app id 的创建)点击继续,完成创建

<8>.创建证书

<9>.勾选测试推送证书,(这个证书用于服务器向APNS发送推送请求的时候使用)点击继续

<10>.选择我们刚才1~9步的时候创建的app id 点击继续

<11>.提醒你需要一个CSR文件

<12>.上传(CSR文件)。

<12.1> 创建CSR文件的流程

打开钥匙串- 点击菜单的钥匙串访问-证书助理-从证书颁发机构请求证书

<12.2>填写请求的详情,输入请求者的邮箱,可以通过邮箱发送给请求者,也可以储存到本地磁盘

点击继续

<12.3>选择位置,点击储存(创建好的CSR文件会出现在对应的文件夹中)

<13>.点击选择文件,来提交我们创建的CSR文件

<14>、选择对应的CSR文件点击选取,然后点击继续。

<15>、下载这个证书

步骤2:创建描述文件

<1>开始创建描述文件

<2>选择描述文件的类型,然后点击继续

<3>.选择这个描述文件包含的app id(app id 是1~9步所创建的)

<4>.选择所需要用到的证书(如果有多个可以全选)

<5>.选择所需要用到的设备(可以全选)然后点击下一步。

点击完成以后双击证书和描述性文件, 上面申请的证书是测试远程推送的一个证书。
测试推送证书只用于服务器向apns发送消息的时候使用 (一般要求为pem文件)可以先导出p12然后在转换成pem文件

步骤3: 极光推送页面设置

<1>双击打开证书

双击打开证书后,证书打开时会启动“钥匙串访问”工具。 在“钥匙串访问”中你的证书会显示在“我的证书”中

<2>导出 .p12 证书文件

<3>将文件保存为Personal Information Exchange (.p12)格式。

<4>上传证书

在 JPush 管理 Portal 上,针对某应用程序,上传上面步骤得到 .p12 证书文件。这是 iOS SDK 能够接收到 JPush 推送消息的必要步骤。

<4.1>在JPush Portal上创建应用

在 JPush的管理Portal 上创建应用并上传APNs证书。如果对APNs证书不太了解 请参考: iOS 证书设置指南

<4.2>创建成功后自动生成 AppKey 用以标识该应用。

步骤4:Xcode工程设置

<1>.项目代码

AppDelegate.h里面的代码: #import### staticNSString appKey = @“4fd48a0712a3fde75eb1c7423”;//申请应用成功以后官方会提供给你. staticNSString channel = @“Publish channel”; staticBOOL isProduction = FALSE; @interface AppDelegate :UIResponder ### @property(strong,nonatomic) UIWindow *window; @end

<2>. Xcode的证书配置教程

参照iOS SDK 集成指南集成JPush SDK 和上传了推送用到的p12证书后在编译运行前需要先配置一下证书,步骤如下: 打开xxx-info.plist的Bundle identifier项把上传到JPush 控制台的bundle id填写进去:

<3>点击项目,选择目标TARGETS后进入Build Setting 界面,搜索“Code signing”,按照下图配置

<4>客户端设置

需要在Xcode 中修改应用的 Capabilities 开启Remote notifications,请参考下图:

步骤5:真机测试

<1>登陆到极光推送官网

<2>选择应用,也就是你创建测试的项目:我的项目是aa.TestPush

<3>点击发送通知

点击左边的发送通知,也可以选择自定义消息(这里我选择的发送通知):

<4>填写推送内容

这里我随便写点什么用我手机测试:

<5>点击立即发送:

<6>手机上的显示:

<7>推送历史

===================================================================================================================================================================================================================================================================================================================================================

测试过程中可能遇到的问题和解决方法

1.提示“Not get deviceToken yet. Maybe: your certificate not configured APNs? or current network is not so good so APNs registration failed? or there is no APNs register code? Please refer to JPush docs.”

原因:我的CodeSigning中的Provision Profile没有选择正确,原因是我在apple的dev中心修改了配置,但没有更新到xcode。更新可以在账户管理中找到,xcode菜单在Xcode->Preferences->account选项卡,在Apple IDs中找到你得账号,点击右下角的view detail按钮,在弹出的窗口中点击左下角的刷新按钮即可刷新最新的Provision Profile。最后在CodeSigning中的Provision Profile中选择最新的值即可。

2.在给新的iphone手机测试时,接收不了推送消息

原因:你的描述文件中不包含新手机的设备。 要去开发者中心更新你的描述文件。添加新的设备。然后重新下载描述文件,双击在运行Xcode

3.在真机测试的时候往往会突然出现这样一个错误,code signing is required for product type ‘Application’ in SDK’iOS 9.1’ 。

原因:就是说代码签名证书不对劲

解决方案1.选择工程->Build Settings -> Code Signing -> Code Signing Identity -> Debug -> Any ios SDK 将选项改为:iPhone Developer

解决方案2.重新下载你的证书,或者修改通配符,或者说修改你的appid 。选择工程 -》Bundle Identifier 修改为最新的appid 。造成这种原因是因为你修改了你的app sdk版本。

如果还不行,可以试试 Edit Project Setting 下面的那个菜单:Edit Active Target “Hello World” =》Build =》 Code Signing =》 Any ios 的值设置为iphone Developer

4.编译报错Could not find Developer Disk Image

原因:字面意思是找不到开发者的磁盘映像!!大概意思是Xcode7.1 不支持iOS9.2 解决方法1.更新了Xcode 解决方法2. 下载iOS9.2的配置文件包,右键打开xcode的显示包内容,拷贝到你的/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport这个目录下(需要注意一点的是,将配置文件拷贝过去后,将XCode重启下再进行编译,如果还不行,可以尝试将MAC重启,如果正常的话,会重新扫描符号文件,待扫描完成,就可以进行真机调试了。)

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
       Chromium的Render进程接收到Browser进程分发过来的输入事件之后,会在Compoistor线程中处理掉滑动和捏合手势这两种特殊的输入事件,其它类型的输入事件则交给Main线程处理。Main线程又会进一步将输入事件分发给WebKit处理。WebKit则根据输入事件发生的位置在网页中找到对应的HTML元素进行处理。本文接下来详细分析Chromium分发输入事件给WebKit处理的过程。 老罗的新浪微博: http://weibo.com/shengyangluo ,欢迎关注!  
Android 如何实现类似 ios 点击状态栏回到顶部功能 由于公司的项目基本上都是以 ios 为主, android 为辅的,因此开需求会议的时候,经常会碰到“要实现点击状态栏回到顶部”的需求,这个功能 ios 实现起来特简单,也就一个属性的问题,但是 android 实现起来却超麻烦(所以当初不知道是基于什么原因,老大基本上都是把这个功能推掉的),最近发现微信朋友圈也具有类似 ios 点击状态栏回到顶部的功能,也许你们会说我肯定是点错了,点到标题栏或者直接认为我状态栏、标题栏不分,但是,我可以在这里

我的相册管理系统 - 2016-07-26 04:07:10

功能文件的上传,下载和管理 技术:1.用xml当做数据库存储信息(dom4j,xpath) 2.Java表单的文件上传和下载 3.文件目录的打散 ( Hash目录是一种优化文件存储性能的方法) 需要的jar包: commons-fileupload-1.2.2.jar、commons-io-2.1.jar、dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar 先写index.jsp %@ page language= "java" import= "java.util.*" pageE
SwipeRefreshLayout是Android官方的下拉刷新控件,使用简单,界面美观,不熟悉的朋友可以随便搜索了解一下,这里就不废话了,直接进入正题。 这种下拉刷新控件的原理不难,基本就是监听手指的运动,获取手指的坐标,通过计算判断出是哪种操作,然后就是回调相应的接口了。SwipeRefreshLayout是继承自ViewGroup的,根据Android的事件分发机制,触摸事件应该是先传递到ViewGroup,根据onInterceptTouchEvent的返回值决定是否拦截事件的,那么就onInt

Android 初识Retrofit - 2016-07-25 19:07:08

什么是 Retrofit ? Retrofit 是一套 RESTful 架构的 Android(Java) 客户端实现,基于注解,提供 JSON to POJO(Plain Ordinary Java Object ,简单 Java 对象),POJO to JSON,网络请求(POST,GET, PUT,DELETE 等)封装。 配置环境 在build.gradle中添加 ... .. //编译RxJava compile 'io.reactivex:rxjava:1.1.6' //编译RxAndroid
 Android基础知识(简单实例计算器) 在做这个计算器的时候,我认为主要分为两部分:界面设计,功能实现。 (效果图) 界面设计: 其实界面设计和功能实现是相互联系在一起的,我界面怎么去设计,功能就要去怎么实现。 1、 控件: 界面有19个按钮,数字1-9和小数点、加减乘除、清空回退、百分比、等号,还有一个显示内容的文本框。实现起来十分简单只要拖动到xml中即可。 2、 布局设计: 刚拖进来的控件都摆放得比较凌乱,需要对其调整,本案例中,我会使用LinearLayout对界面进行布局。 3、 样式: 有

Android之广播与服务<一> - 2016-07-25 19:07:17

转发请注明出处: http://blog.csdn.net/qq_28055429/article/details/52014058 前言:作为四大组件成员--广播和服务,虽然在用户使用时它们通常是隐身的,但是好多地方都有它们的身影,如:发送短信,状态栏通知,夜间模式,后台音乐播放等等.... One  ----------- 广播: 一,基本知识: (1)名字: BroadcastReceiver (2)作用: 用于监听系统全局的广播消息,以便实现系统中不同组件之间的通信 (3)经常用途 :飞行模式,后
1、图像坐标系 如图2.1所示,以图像左上角为原点建立以像素为单位的直接坐标系u-v。像素的横坐标u与纵坐标v分别是在其图像数组中所在的列数与所在行数。(在OpenCV中u对应 x,v对应y) 由于(u,v)只代表像素的列数与行数,而像素在图像中的位置并没有用物理单位表示出来,所以,我们还要建立以物理单位(如毫米)表示的图像坐标系x-y。将相机光轴 与图像平面的交点(一般位于图像平面的中心处,也称为图像的主点(principal point)定义为该坐标系的原点O1,且x轴与u轴平行,y轴与v轴平行,假
ART世界探险(6) - 流程控制指令 分支结构 Java分支结构 我们先来个最简单的,比较大小吧。 public static long bigger ( long a, long b){ if (a=b){ return a; } else { return b; } } public static int less ( int a, int b){ if (a=b){ return a; } else { return b; } } 看看Java字节码是个什么样子: public static lo
Handler机制算是我入门源码的第一节。看得比较仔细。体会较多。mark一下。 顺序:先科普一下Handler基本功,然后再细讲下源码 一、Handler目的: 目的:Handler机制来处理了子线程去更新UI线程控件问题。 二、handler,messagequeue,looper,message关系图: 其实各种书籍上都有这么一张图。但是主要是学习源码,所以还是自己手画一张“流程图”。 三、handler知识点总结: ( 若以下总结都能理解,那么可以不再看本文后续源码分析; ) 1)handler、