iOS面试题 - 应用测试、发布和消息推送

应用测试和发布

1、什么是iOS中的App ID?

每一个App都有一个唯一的、独立的ID,这就是App IDApp ID由两个部分构成: Team IDBundle ID,形式为Team ID.Bundle ID

屏幕快照 2019-06-04 上午11.21.08.png
  • Team ID指定App的开发者或开发团队。
  • Bundle ID指定App或与之相关的一系列AppBundle ID可以唯一确定AppBundle ID是在Xcode项目中确定的。

App ID字符串通常以反域名(reverse-domain-name)格式(com.domainname.appname)作为前缀(Prefix/Seed),一般不超过255个ASCII字符。

App ID分为两类:

  • Explicit App ID:唯一的App ID,用于唯一标识一个应用程序。例如“com.apple.garageband”这个App ID,用于标识Bundle Identifier“com.apple.garageband”App

  • Wildcard App ID:含有通配符的App ID,用于标识一组应用程序。

屏幕快照 2019-06-04 上午11.28.37.png

例如*(实际上是Application Identifier Prefix)表示所有应用程序;而“com.apple.*”可以表示Bundle Identifier“com.apple.”开头(苹果公司)的所有应用程序。

屏幕快照 2019-06-04 上午11.29.20.png

App ID

2、什么是iOS中的Code Signing?

屏幕快照 2019-06-05 上午10.17.24.png

为了确定App是谁开发的,开发之后有没有修改,苹果公司引进了Code Signing的机制。有了它,从App Store下载某个App后,iOSMacOS系统可以通过签名确认是谁开发了此App,以及签名是否有效。

只要App对应的可执行文件被修改,签名就认定为无效。如果App的签名无效,那么系统将拒绝运行App,以保证整个系统的安全性和用户体验。Code Signing对应的签名是由一对公共密钥和私有密钥,以及一个由Apple签发的证书构成的。其中私有密钥用来产生签名;证书则包含了公共密钥并由此认定是开发者。

Code Signing Guide

3、什么是iOS中的App Thinning?

App Thinning,中文为“应用瘦身”,指的是App Store和操作系统在安装iOSwatchOSApp时,通过一系列的优化,尽可能地减小安装包的大小,使得App以最节省资源的方式、最适合的大小被安装到设备上。其包括三种类型:Slicing、Bitcode、On-demand Resource

Slicing

App切片(slicing),根据苹果的文档,

切片是创建和提供不同的目标设备的应用程序包的变体(variant)的过程。

一个变体(variant)只包含可执行架构和目标设备所需要的资源。换句话来说,应用程序切片只提供给与每个设备相关的资源(取决于屏幕分辨率和架构等等)。实际上,应用程序切片完成了 App 瘦身的大部分工作。

Bitcode

字节码是一个编译好的程序的中间表示形式。上传到iTunes Connect 中的包含字节码的app将会在 App store 中进行链接和编译。苹果会对包含字节码的二进制app进行二次优化,而不需要提交一个新的app版本到app store中。

On-demand Resource

按需加载的资源就是在App初次安装后需要下载的文件。例如,游戏的特定关卡(以及和这些关卡相关的内容)只有在玩家解锁时才可以下载。此外,超过设置时间之后,玩家不需要的早期关卡可以被移除,以节省设备的存储空间。

iOS 9 App 瘦身功能

4、向App Store提交App时有哪些原因可能被拒绝?

虽然现在App Store审核App越来越快了,被其拒绝上架所付出的成本也越来越低了,但是在提交App之前还是应该仔细检测,争取一次性通过。

被App Store拒绝的原因有很多,主要有以下几种:

奔溃

程序本身有bug,第三方服务器出错都有可能造成App被App Store拒绝。注意,一般测试是在线下环境中运行App,而App Store是在线上环境运行的,所以,在提交审核之前,还是应该要线上环境运行一遍。

第三方

如果App需要安装第三方应用,比如需要QQ登录,而测试员的手机中又没有安装QQ,如果出现提示安装QQ信息,就有可能被App Store拒绝上架;另外,使用第三方广告,也有可能因为违规被App Store拒绝上架

版权

第三方客户端套用某平台的名字,在App的描述或命名中为了提供点击量和排名加入某些无关的关键字;或者是“山寨”其他App的行为;App中包含没有授权的内容,都会被App Store拒绝上架。

材料不齐

有时App会因为缺少材料导致App Store无法审核。例如:缺少截图或者使用错误的截图。这里只是部分情况。苹果官方有专门的审核文件,可以仔细阅读。

缺少元数据问题

Guideline 2.3.8 - Performance - Accurate Metadata

We noticed that your app icons, screenshots, or other metadata items include content that is not appropriate for all age groups. 

Please see attached screenshots for details.

Next Steps

To resolve this issue, please revise your metadata to ensure that all items are appropriate for a 4+ age rating. Since this content is visible on the App Store by all users, even when purchasing is restricted by the app's rating, this content must meet the requirements for a 4+ rating.

For resources on metadata best practices, you may want to review the App Store Product Page information available on the Apple developer portal.

Since your iTunes Connect status is Rejected, a new binary will be required. Make the desired metadata changes when you upload the new binary.

NOTE: Please be sure to make any metadata changes to all app localizations by selecting each specific localization and making appropriate changes.

违法审核指南

比如:禁止传销和金钱相关的内容出现在app中

5、苹果Appstore加急审核方法?

苹果Appstore加急审核,是为开发者提供的快速审核通道。加急审核主要用于解决紧急需求,例如重要节日功能,严重的bug,遇到这些问题可以提出加急申请。加急申请入口

加急申请的整个流程

1、首先打开itunesconnect管理后台在后台首页的最下方,找到 Contact us(联系我们)

屏幕快照 2019-06-05 上午11.19.24.png

2、进入联系我们页面

屏幕快照 2019-06-05 上午11.20.49.png
屏幕快照 2019-06-05 上午11.17.31.png
屏幕快照 2019-06-05 上午11.22.01.png

3、进入加急审核页面,按需求填写信息提交即可

屏幕快照 2019-06-05 上午11.55.54.png
屏幕快照 2019-06-05 上午11.56.02.png

6、讲讲P12文件?

为什么需要P12文件

  • 正常情况下一个开发者账号只能生成两个cer证书
  • cer证书在生成时和电脑绑定
  • 如果一个电脑没有对应有效的cer证书,就不能真机调试
  • 苹果为了解决让多人都可以真机调试,但是不会无限制生成证书,推出了p12文件

P12文件的作用

  • p12证书的作用相当于之前的cer证书
  • 用于验证我们电脑的身份,让电脑具有真机调试的能力

如何生成P12证书

  • 找到之前安装的cer证书(在钥匙串中),点击右键导出
4010043-a0b7622c48fde17b.png
  • 选择存放的目录


    image.png
  • 输入密码生成即可,一般不输入方便使用

4010043-577f5b445899584d.png

7、测试APP证书配置

1、配置cer证书

  • 作用:用于决定哪台电脑可以打包测试程序
  • 结果:会生成cer证书,需要下载安装证书

2、配置APPID

  • 作用:用于决定让哪些App可以测试打包
  • 结果:不会生成新的文件,之后会利用该AppID生成描述文件
  • 类型:
    1)明确的APPID:可以做特殊功能:比如内购/远程推送
    2)模糊的APPID:方便测试,但是不能做特殊功能

3、配置Device

  • 作用:用于决定让哪些真机可以用于测试打包
  • 结果:不会生成新的文件,之后在生成描述文件时会需要选择设备

4、配置描述文件

  • 作用:将刚才配置的三个内容联系起来
  • 结果:会生成新的文件,需要下载安装(双击安装即可,会自动安装到Xcode中)

5、总结:

  • 最终生成两个文件:证书文件和描述文件

8、推送证书到期处理

推送证书有时间期限的,有时我们应用突然接不到消息了,有可能就是证书过期了,有效期一般为1年左右,那有效期快过了怎么处理呢?

解决方案:

1、删除MAC上钥匙串访问中对应的推送证书
2、去开发者中心删掉过期推送证书,重新按着上面的步骤重新来一遍
3、在第三方平台上重新上传新的.p12证书

9、Metadata Reject

处于“Metadata Reject”状态的应用,通常不需要重新上传应用,只需要把相应的元数据信息修改好,在“Resolution Center”给审核人员回复说明一下即可,如果选择重新上传应用,就会需要重新排队等待审核

10、审核被拒绝情况

1、Guideline 1.2 - Safety - User Generated Content

Your app enables the display of user-generated content but does not have the proper precautions in place.

Next Steps

To resolve this issue, please revise your app to implement all of the following precautions:

- Require that users agree to terms (EULA) and these terms must make it clear that there is no tolerance for objectionable content or abusive users
- A method for filtering objectionable content
- A mechanism for users to flag objectionable content
- A mechanism for users to block abusive users
- The developer must act on objectionable content reports within 24 hours by removing the content and ejecting the user who provided the offending content

如果你的 App 内有发帖等UGC(用户产生内容)功能,必须提供用户协议,并留有内容举报功能,否则就会被审核拒绝。

解决方案:

1、注册页要有用户隐私相关协议,如果没有注册功能,那就在初次登录的时候弹出来让用户看;或者就是登录的时候加个同意用户隐私协议的按钮啊,必须点了勾选上才能登录。知乎底部加一个用户协议

4010043-ed56d8039e2be262.png

2、 朋友圈、动态这种要有举报功能即UGC内容需要有投诉举报的地方

3、可以在用户生成内容上添加上举报按钮,同时也要按相应要求加入其他相关功能并立即执行;用户协议一般加在用户的注册入口,iTC后台的隐私协议中也需要填上。

2、Guideline 3.2.2 - Business - Other Business Model Issues - Unacceptable

The primary purpose of your app is to encourage users to watch ads or perform marketing-oriented tasks, which is not appropriate for the App Store.

Next Steps

We encourage you to review your app concept and incorporate different content and features that are in compliance with the App Store Review Guidelines.

问题:App主要鼓励用户做任务,和看广告,这种模式不被AppStore接受

解决方案:

因为本身App的设计是观看视频和推广,这些任务不能取消,所以分为线上模式和审核模式,审核模式把相关任务屏蔽,关于金币的字眼全部屏蔽。在线上模式放开(注意:包括审核时所填写的信息和宣传图片都不能带有与金币或者推广任务相关的信息)

3、Guideline 2.1 - Performance - App Completeness

We discovered one or more bugs in your app when reviewed on iPad running iOS 11.3 on Wi-Fi connected to an IPv6 network.

Specifically, we found that your app did not load content properly after launched.

Please see attached screenshots for details.

Next Steps

To resolve this issue, please run your app on a device to identify any issues, then revise and resubmit your app for review.

If we misunderstood the intended behavior of your app, please reply to this message in Resolution Center to provide information on how these features were intended to work.

For new apps, uninstall all previous versions of your app from a device, then install and follow the steps to reproduce the issue. For updates, install the new version as an update to the previous version, then follow the steps to reproduce the issue.

其实就是新设备网络权限第一次不能访问,需要进行监听加载数据。iOS10 优化APP首次安装网络权限提示方案。解决方案很简单,可以监听网络状态,网络连接时重新请求数据就可以了。

11、测试设备数的限制

测试设备100个数目限制的详细规则

  • 每个开发者在一个membership year(从缴费日开始算起,一年之内算一个membership year)中,只能有100个增加设备的名额,如果你增加一个设备,之后又将该设备删掉,并不会将用掉的名额恢复

  • 开发者在每个membership year开始的时候,team agentadmin角色可以选择删除一些设备来恢复资格,也可以清空所有设备来恢复到100次设备的名额。这个操作在team agentadmin在一次新的membership year开始后即可使用。在使用时需要注意,先将需要删除的设备删掉,然后才能添加需要新增的设备。一旦开始增加新设备,删除设备以恢复名额的功能将不再可用。

  • 在以后整个membership year中,删除设备不会增加新的名额

举个例子:

  • 假如第一年你增加了70个设备,同时删除了10个设备,这个时候,虽然你的设备数是60,但是可用的增加测试机的名额却是只有30个

  • 到了第二年, 你延续开发者身份,在你第一次登录进去后, 你可以看到你的可用设备恢复成100-60=40个了,这个时候,你可以选择删除一些设备,例如你又删除了20个设备,这样你的名额数变成了60个。之后你增加了1个设备,因为你选择了增加新设备,苹果认为你以及放弃了删除设备以恢复名额的机会,这样,你的名额就固定成59个了,以后删除设备都不会增加新设备,直到你的下一个membership year开始时才又会有这样的机会来删除设备释放名额

如果设备数达到上限,又急需要增加新设备怎么办?对此你可以给苹果的技术客服发邮件要求他们帮助删除所有设备,并且恢复到增加100个测试设备的名额。

其实有来testflight设备数都不是问题,完全是为测试准备的

推送

1、本地推送通知的流程是怎样的?

UserNotifications框架是针对远程和本地消息通知的框架,其流程主要分为以下4步:

1)注册。通过调用requestAuthrization这个方法,通知中心会向用户发送通知许可请求。用户在弹出的alert请求中点击“同意”按钮,即可注册

2)创建。首先设置信息内容UNMutableNotificationContent和触发机制UNNotificationTrigger;然后用这两个值来创建UNNotificationRequest;最后将request加入到当前通知中心UNUserNotificationCenter.current()

3)推送。这一步想系统或者远程服务器推送通知的过程。收到通知后对应的UI会显示在手机界面上。

4)响应。当用户看到通知后,点击通知后会看到相应的响应选项。UNNotificationActionUNNotificationCategory用于设置响应选项

2、远程消息推送原理

1929699-2eb0ea97a1599a0c.jpg

1、应用程序注册APNS消息推送。
2、iOSAPNS Server获取devicetoken,应用程序接收device token
3、应用程序将device token发送给程序的PUSH服务端程序。
4、服务端程序向APNS服务发送消息。
5、APNS服务将消息发送给iPhone应用程序。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容