真机调试

Certificates  证书

Identifiers  标示符

Profiles  描述文件

一. 证书,安装在电脑上,只有安装了证书的电脑,才有可能进行真机调试。

- All

- Develpment 开发的证书 - 最多可以有两个证书

- Production 商品化的证书,上架,发布

申请开发者证书步骤

1. iOS dev

2. 创建CSR,证书请求文件

3. 在钥匙串访问中,申请,从授权机构申请证书-》保存到磁盘

4. 将CSR文件上传到苹果服务器

5. 苹果服务器会自动生成,签名后的CER文件

二. 标示符

AppID = Bundld ID 用来在苹果市场上全球唯一标示每一个应用程序的

在开发中,为了保证方便,可以使用AppID可以使用通配符,*替代所有的应用程序

提示:淘宝购买的开发者账号,无法测试特殊功能。

三. 设备 UDID -》 哪些设备能够参与真机调试

使用设备的唯一标示符号制定,哪些真机能够调试开发。每个开发者,最多只能添加100台设备!

在一年有效期内,即便删除了设备,名额仍然会被占用!会在下一次交款后,释放名额。

每一个设备的唯一标示符号,能够唯一准确的定位到一台设备,只能在"添加设备时"使用!

如果程序中使用了唯一标示符号,将无法上架!

*** 有很多的开发商希望能够准确的知道用户是谁,但是不能使用唯一标示!

四. 描述文件

用来描述那台电脑开发,能够开发哪个应用程序,在哪台真机上调试!

按照提示一步一步往下走,最后下载,双击,保存到Xcode 中!

注意:

>检查证书的状态, 必须是绿色才可以调试

>机的系统版本必须比Xcode中的部署版大

>从网上下载的程序,无法运行,可以检查一下开发签名 Code Sign。

6. 双击CER文件,会将证书导入到钥匙串访问中,到此,证书安装环节OK

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

>如果新到公司,可以申请开发者证书

>让部门领导给你账号, 自己申请. 或者让领导帮你申请一个

如果新到公司,发现无法再申请开发者证书

1> 可以管其他同事要,P12文件

P12文件中,包含有创建证书时的私钥,和苹果签名的信息,可以给其他人使用“双击”安装;

2> 如果得到答复,已经走了!

进入开发者网站,找到开发者证书,Revoke原有的证书,重复之前的步骤!

测试打包

1.登录apple的开发者主页:developer.apple.com

2.选择Ad Hoc生成一个ios_distribution.cer: 让电脑具备打包程序的能力

3.新建一个App ID : 方便打包哪个程序

4.利用用户设备的UDID注册设备

5.选择Ad Hoc利用ios_distribution.cer + 设备UDID + App ID --> 描述文件

(描述文件的作用:

1> 能知道在哪台电脑上, 为哪台设备打包哪个程序

2> 哪台设备需要安装打包哪个程序)

6.最终产生了3个文件

1> CertificateSigningRequest.certSigningRequest

* 包含了电脑的信息

* 发送给苹果服务器, 苹果服务器根据文件信息来生成一个电脑证书

* 生成的证书就可以让对应的电脑具备某个特殊的能力

2> ios_distribution.cer

* 打包证书

* 安装这个证书后, 电脑就具备打包程序的能力

3> nj_iphone6_news.mobileprovision

* 里面包含了3个信息:ios_distribution.cer + 设备UDID + App ID

7.安装证书和描述文件

1> ios_distribution.cer

2> nj_iphone6_news.mobileprovision

8.项目Scheme右边的设备选择iOS Device

9.点击Xcode的菜单

Product --> Archive --> Distribute --> ....Ad Hoc... --> 选择对应的描述文件

10.生成一个ipa文件,发给测试人员和客户

* ipa本质是zip

* android的安装包是APK格式,本质也是zip

应用程序发布

发布应用程序

*developer.apple.com : 开发者主页, 配置证书\AppId\描述文件

1> 发布的证书, 说清楚哪台电脑可以发布程序

2> 添加发布的描述文件,描述在哪台计算机上能够发布哪些应用程序

2. iTunesConnect网站(专门用来发布应用程序)

https://itunesconnect.apple.com

1> 如果想挣钱,先设置在Agreements, Tax, and Banking设置个人储蓄卡信息

做一次就行

2> 添加应用程序

- 名称,不能重复,可以使用 - 添加一些后缀信息

- 关键字,增加软件被搜中的几率,使用英文的都好分隔,不能超过255个字节

-图片,图片文件名称中不能有中文

- Rating,设置应用程序的等级,默认都选择最低的,成人,赌博……

- App Review Information

提供给苹果的审核人员,来辅助测试使用的。

如果有测试帐号,必须提供!

如果有测试数据,需要提供给苹果,例如快递查询!

需要提供联系人的联系方式,电子邮件,电话需要添加国际区号,+86

3> 从Xcode6开始,上传完应用程序之后,程序默认会在prerelease中,需要等待5~50分钟不等。

只有Prerelease中的状态变化后,才能够在Versions中添加Build,提示,这个过程中,不要重复在Xcode中上传。

4> 所有准备就绪后,点Submit按钮提交应用程序,出现的三个选项,都选择No。

卡通形象,第三方内容,商标!

5> 等待,2天~20天不等……

在开发应用程序中,一些注意事项!

1> 每一个应用程序,苹果都会审核,但是是不会审核,是否有逻辑问题,内存泄漏……

2> 发布应用程序之前,一定要用真机测试!

* 因为有时候,有些界面在模拟器和真机上会略微有一些差异!

* 有的时候,在真机上,因为内存原因,更容易让程序崩溃!

苹果的审核人员,如果在开发过程中,出现崩溃,会直接拒绝!

3> 抓数据,有离线数据,在线抓数据!没有数据会直接拒绝!

苹果的底线:

- 不崩溃

- 无盗版,如果设计到第三方登陆,也需要协商隐私策略,保证开发商不泄漏用户信息

- 用户群体,如果小众,需要描述清楚,用户在哪里

- 广告!“友盟”第三方框架,做后台统计,使用到广告标识符,如果发现有广告标识符,但是界面上没有出现广告,也会拒绝!

- 血腥、色情!

/****************************** 一下内容iOS8以及变化了***********************************/

1.填写完应用信息

* 状态名 : Prepare for Upload

* 状态颜色 : 黄色

* 含义 : 让开发者准备上传自己的应用(打包好的程序)

* 注意 : 这个状态下, 还是不允许上传打包好的程序

2.利用Product -> Archive将app打包准备完毕

3.点击"Ready to Upload Binary"

* 状态名 : Waiting For Upload

* 状态颜色 : 黄色

* 含义 : 告诉苹果已经准备好了, 随时可以上传, 苹果等待开发者上传程序

* 注意 : 这个状态下才允许上传程序

4.利用Window -> Organizer -> 选择打包好的程序 -> Distribute

-> ...App Store... -> 输入账号密码 -> 选择应用和描述文件 -> Submit

1> 上传中途可能会遇到一些问题

* 图片尺寸不符合

* 图片格式不符合(表面上是png, 实际上时jpg)

* 所上传应用的Bundle Identifier 跟 官网上所创应用的Bundle ID不一致

* 所上传应用的版本号 跟 官网上所创应用的版本号不一致

* ......

5.如果没有出现任何问题, 就耐心等待上传

6.上传完毕, 准备审核

* 状态名 : Prepare For Review

* 状态颜色 : 黄色

* 含义 : 苹果正在准备这个应用的审核工作

7.上传完毕几分钟后, 等待审核

* 状态名 : Waiting For Review

* 状态颜色 : 黄色

* 含义 : 开发者开始等待苹果"漫长"的审核工作 (一般至少2~30)

7.审核完毕

1> 审核通过

* 状态名 : Ready For Sale

* 状态颜色 : 绿色

* 含义 : 随时都可以出现在App Store(何时出现取决于当初设定的上线日期)

2> 审核失败

* 状态名 : Rejected (应用本身有问题)

* 状态颜色 : 红色

* 含义 : 被苹果拒绝了, 需要根据苹果的反馈信息, 修正自己应用的内容, 后面再次上传

* 状态名 : Metadata Rejected (网站上填写应用信息有问题)

* 状态颜色 : 红色

* 含义 : 被苹果拒绝了, 需要根据苹果的反馈信息, 修正自己应用的描述信息, 不需要再次上传

推送通知

远程推送应用配置过程

1. 创建支持远程推送功能的App ID

2. 申请开发者证书,并选中刚刚创建的App ID

3. 下载CER文件,并导入钥匙串管理

4. 申请发布证书,并选中刚刚创建的App ID

5. 下载CER文件,并导入钥匙串管理

6. 检查App ID,确认证书已经指定

远程推送应用程序开发过程

1. 新建应用程序

2. 指定AppID,在developer.apple.com上设置的AppID

#ifdef __IPHONE_8_0

// 注册接收通知的类型

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];

[application registerUserNotificationSettings:settings];

// 注册允许接收远程推送通知

[application registerForRemoteNotifications];

#else

// 如果是iOS7.0,使用以下方法注册

[application registerForRemoteNotificationTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound];

#endif

// 当得到苹果的APNs服务器返回的DeviceToken就会被调用

// 7040f7d5 5a974598 c5cf31b5 3e340b39 68affd25 122f0ce1 3f315226 396c2e5b

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

NSLog(@"deviceToken是:%@", deviceToken);

}

// 接收到远程通知,触发方法和本地通知一致

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

NSLog(@"%@", userInfo);

}

*** 使用后台的远程消息推送

1> 在Capabilities中打开远程推送通知

2> 实现代理方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

远程消息数据格式:

{"aps" : {"content-available" : 1},"content-id" : 42}

执行completionHandler有两个目的

1> 系统会估量App消耗的电量,并根据传递的UIBackgroundFetchResult 参数记录新数据是否可用

2> 调用完成的处理代码时,应用的界面缩略图会自动更新

注意:接收到远程通知到执行完网络请求之间的时间不能超过30秒

if (userInfo) {

int contentId = [userInfo[@"content-id"] intValue];

ViewController *vc = (ViewController *)application.keyWindow.rootViewController;

[vc loadDataWithContentID:contentId completion:^(NSArray *dataList) {

vc.dataList = dataList;

NSLog(@"刷新数据结束");

completionHandler(UIBackgroundFetchResultNewData);

}];

} else {

completionHandler(UIBackgroundFetchResultNoData);

}

IOS-真机相关的更多相关文章

  1. iOS 真机调试不能连接网络的排错过程

    开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 gSOAP 2.8 iPhone 6S+iOS 10.1.1   问题: 使用 Qt Quick 写了一个跨平台的应用,在Wi ...

  2. ios真机调试教程(不上架App Store安装到手机)

    原文 不上架App Store安装到手机调试测试,需要用到ios真机调试证书打包的ipa才能安装到非越狱的手机使用. 2017年最新整理的ios真机调试的详细图文步骤流程,轻松的把你开发的ios ap ...

  3. iOS 真机测试时报错:Provisioning profile "iOS Team Provisioning Profile: XXX” doesn't include the currently selected device “XXX”.

    这几天因工作需要,去给客户演示iOS项目打包的过程.之前演示都是顺利的,但后来客户自己操作时打电话说遇到了问题,出现报错. 就过去看了一下,发现一个很陌生的错误提示: The operation co ...

  4. IOS真机测试

    学习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发有点不同,Android开发我更觉得跟web(Html)倒是有类似的地方,都是节点标签显示的,当然个人理解,感 ...

  5. iOS真机测试,为Provisioning添加设备 -- based xcode6[原]

    iOS真机测试,  我们需要添加几台新的设备进行测试.我们只需要对Provisioning Profiles 进行更新. 1. 在苹果开发者中心添加测试设备 打开苹果Certificates, Ide ...

  6. Unity导出iOS真机测试教程

    原地址:http://unity3d.9tech.cn/news/2014/0410/40177.html 学 习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发 ...

  7. iOS真机调试之我见

     入职20多天,以前一直以为iOS真机调试是多么复杂的事情,但在公司大牛的帮助下:终于理清头绪,由于公司证书已申请,文章中免不了旁征博引. 1.首先,得有苹果开发者账号,如果在公司,公司会提供:不在公 ...

  8. ionic项目ios真机部署(不需开发者账号)

    ionic项目ios真机部署(不需开发者账号) 安装ionic和cordova npm install -g ionic npm install -g cordova 创建一个新项目 ionic st ...

  9. 如何在 iOS 真机运行 Appium

    使用 gui 启动的 appium 1.2.2 也会有这个问题,所以你要把 deviceconsole 复制到 /Applications/Appium.app/Contents/Resources/ ...

  10. iOS 真机测试错误“The application bundle does not contain a valid identifier”

    iOS 真机测试错误"The application bundle does not contain a valid identifier" 真机测试的时候报错:"The ...

随机推荐

  1. ubuntu su failure when password was right

    https://blog.csdn.net/u013066244/article/details/52694540

  2. HTTP Keep-Alive是什么?如何工作?(转)

    add by zhj: 本篇只是Keep-Alive的第一篇,其它文章参见下面的列表. 原文: HTTP Keep-Alive是什么?如何工作? 1. HTTP Keep-Alive是什么?如何工作? ...

  3. Django框架--路由分配系统

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  4. 序列化组件之生成hypermedialink

    一  生成hypermedialink(极少数) 组件 class BooksSerializer(serializers.ModelSerializer): name = serializers.C ...

  5. mysql模糊查询实践总结

    %代表任意多个字符 _代表一个字符 在 MySQL中,SQL的模式缺省是忽略大小写的 正则模式使用REGEXP和NOT REGEXP操作符. “.”匹配任何单个的字符.一个字符类 “[...]”匹配在 ...

  6. ubuntu下安装qwt

    转载自:http://blog.chinaunix.net/uid-20717410-id-256767.html 相对于官方说明,特别适应于使用qt IDE开发者. //以下为引用: 虽然官网上说只 ...

  7. Python基础总结(字符串常用,数字类型转换,基本运算符与流程控制)

    一.字符串常用操作 #Python strip() 方法用于移除字符串头尾指定的字符(默认为空格) name='*egon**' print(name.strip('*'))#移除 name 变量对应 ...

  8. PHP如何实现验证码

    现在来说说简单的纯数字验证码吧. 如果是初学者,建议按照我代码的注释 //数字 一步步来.最简单的方法,还是把整个代码复制走了. 新建一个captcha.php: <?php //11>设 ...

  9. NIO复习02

    Selector 1. Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程可以管理多个channel,从而管 ...

  10. thinkphp api架构搭建

    1.结构搭建 模块下面使用 controller , model ,service,validate分别对应的作用 controller控制器里面可以进行分版本 v1,v2之类的,不过要访问通必须配置 ...