應(yīng)用測(cè)試和發(fā)布
1、什么是iOS中的App ID毛好?
每一個(gè)App
都有一個(gè)唯一的望艺、獨(dú)立的ID,這就是App ID
肌访。App ID
由兩個(gè)部分構(gòu)成: Team ID
和Bundle ID
,形式為Team ID.Bundle ID
找默。
-
Team ID
指定App的開發(fā)者或開發(fā)團(tuán)隊(duì)。 -
Bundle ID
指定App或與之相關(guān)的一系列App
吼驶。Bundle ID
可以唯一確定App
惩激,Bundle ID
是在Xcode
項(xiàng)目中確定的。
App ID
字符串通常以反域名(reverse-domain-name
)格式(com.domainname.appname
)作為前綴(Prefix/Seed
)蟹演,一般不超過255個(gè)ASCII字符风钻。
App ID
分為兩類:
Explicit App ID
:唯一的App ID
,用于唯一標(biāo)識(shí)一個(gè)應(yīng)用程序酒请。例如“com.apple.garageband”
這個(gè)App ID
骡技,用于標(biāo)識(shí)Bundle Identifier
為“com.apple.garageband”
的App
。Wildcard App ID
:含有通配符的App ID
羞反,用于標(biāo)識(shí)一組應(yīng)用程序布朦。
例如*
(實(shí)際上是Application Identifier Prefix
)表示所有應(yīng)用程序;而“com.apple.*”
可以表示Bundle Identifier
以“com.apple.”
開頭(蘋果公司)的所有應(yīng)用程序昼窗。
2是趴、什么是iOS中的Code Signing?
為了確定App
是誰開發(fā)的,開發(fā)之后有沒有修改膏秫,蘋果公司引進(jìn)了Code Signing
的機(jī)制右遭。有了它做盅,從App Store
下載某個(gè)App
后缤削,iOS
和MacOS
系統(tǒng)可以通過簽名確認(rèn)是誰開發(fā)了此App
窘哈,以及簽名是否有效。
只要App
對(duì)應(yīng)的可執(zhí)行文件被修改亭敢,簽名就認(rèn)定為無效滚婉。如果App
的簽名無效,那么系統(tǒng)將拒絕運(yùn)行App
帅刀,以保證整個(gè)系統(tǒng)的安全性和用戶體驗(yàn)让腹。Code Signing
對(duì)應(yīng)的簽名是由一對(duì)公共密鑰和私有密鑰,以及一個(gè)由Apple
簽發(fā)的證書構(gòu)成的扣溺。其中私有密鑰用來產(chǎn)生簽名骇窍;證書則包含了公共密鑰并由此認(rèn)定是開發(fā)者。
3锥余、什么是iOS中的App Thinning?
App Thinning
腹纳,中文為“應(yīng)用瘦身”,指的是App Store
和操作系統(tǒng)在安裝iOS
和watchOS
的App
時(shí)驱犹,通過一系列的優(yōu)化嘲恍,盡可能地減小安裝包的大小,使得App
以最節(jié)省資源的方式雄驹、最適合的大小被安裝到設(shè)備上佃牛。其包括三種類型:Slicing、Bitcode医舆、On-demand Resource
Slicing
App
切片(slicing
)俘侠,根據(jù)蘋果的文檔,
切片是創(chuàng)建和提供不同的目標(biāo)設(shè)備的應(yīng)用程序包的變體(variant)的過程蔬将。
一個(gè)變體(variant)只包含可執(zhí)行架構(gòu)和目標(biāo)設(shè)備所需要的資源兼贡。換句話來說,應(yīng)用程序切片只提供給與每個(gè)設(shè)備相關(guān)的資源(取決于屏幕分辨率和架構(gòu)等等)娃胆。實(shí)際上遍希,應(yīng)用程序切片完成了 App 瘦身的大部分工作。
Bitcode
字節(jié)碼是一個(gè)編譯好的程序的中間表示形式里烦。上傳到iTunes Connect
中的包含字節(jié)碼的app
將會(huì)在 App store
中進(jìn)行鏈接和編譯凿蒜。蘋果會(huì)對(duì)包含字節(jié)碼的二進(jìn)制app進(jìn)行二次優(yōu)化,而不需要提交一個(gè)新的app
版本到app store
中胁黑。
On-demand Resource
按需加載的資源就是在App
初次安裝后需要下載的文件废封。例如,游戲的特定關(guān)卡(以及和這些關(guān)卡相關(guān)的內(nèi)容)只有在玩家解鎖時(shí)才可以下載丧蘸。此外漂洋,超過設(shè)置時(shí)間之后,玩家不需要的早期關(guān)卡可以被移除,以節(jié)省設(shè)備的存儲(chǔ)空間刽漂。
4演训、向App Store提交App時(shí)有哪些原因可能被拒絕?
雖然現(xiàn)在App Store審核App越來越快了贝咙,被其拒絕上架所付出的成本也越來越低了样悟,但是在提交App之前還是應(yīng)該仔細(xì)檢測(cè),爭(zhēng)取一次性通過庭猩。
被App Store拒絕的原因有很多窟她,主要有以下幾種:
奔潰
程序本身有bug,第三方服務(wù)器出錯(cuò)都有可能造成App被App Store拒絕蔼水。注意震糖,一般測(cè)試是在線下環(huán)境中運(yùn)行App,而App Store是在線上環(huán)境運(yùn)行的趴腋,所以吊说,在提交審核之前,還是應(yīng)該要線上環(huán)境運(yùn)行一遍于样。
第三方
如果App需要安裝第三方應(yīng)用疏叨,比如需要QQ登錄,而測(cè)試員的手機(jī)中又沒有安裝QQ穿剖,如果出現(xiàn)提示安裝QQ信息蚤蔓,就有可能被App Store拒絕上架;另外糊余,使用第三方廣告秀又,也有可能因?yàn)檫`規(guī)被App Store拒絕上架
版權(quán)
第三方客戶端套用某平臺(tái)的名字,在App的描述或命名中為了提供點(diǎn)擊量和排名加入某些無關(guān)的關(guān)鍵字贬芥;或者是“山寨”其他App的行為吐辙;App中包含沒有授權(quán)的內(nèi)容,都會(huì)被App Store拒絕上架蘸劈。
材料不齊
有時(shí)App會(huì)因?yàn)槿鄙俨牧蠈?dǎo)致App Store無法審核昏苏。例如:缺少截圖或者使用錯(cuò)誤的截圖。這里只是部分情況威沫。蘋果官方有專門的審核文件贤惯,可以仔細(xì)閱讀。
缺少元數(shù)據(jù)問題
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.
違法審核指南
比如:禁止傳銷和金錢相關(guān)的內(nèi)容出現(xiàn)在app中
5棒掠、蘋果Appstore加急審核方法孵构?
蘋果Appstore加急審核,是為開發(fā)者提供的快速審核通道烟很。加急審核主要用于解決緊急需求颈墅,例如重要節(jié)日功能蜡镶,嚴(yán)重的bug,遇到這些問題可以提出加急申請(qǐng)恤筛。加急申請(qǐng)入口
加急申請(qǐng)的整個(gè)流程
1官还、首先打開itunesconnect管理后臺(tái)在后臺(tái)首頁的最下方,找到 Contact us
(聯(lián)系我們)
2叹俏、進(jìn)入聯(lián)系我們頁面
3妻枕、進(jìn)入加急審核頁面僻族,按需求填寫信息提交即可
6粘驰、講講P12文件?
為什么需要P12文件
- 正常情況下一個(gè)開發(fā)者賬號(hào)只能生成兩個(gè)
cer
證書 -
cer
證書在生成時(shí)和電腦綁定 - 如果一個(gè)電腦沒有對(duì)應(yīng)有效的
cer
證書,就不能真機(jī)調(diào)試 - 蘋果為了解決讓多人都可以真機(jī)調(diào)試,但是不會(huì)無限制生成證書,推出了
p12
文件
P12文件的作用
-
p12
證書的作用相當(dāng)于之前的cer
證書 - 用于驗(yàn)證我們電腦的身份,讓電腦具有真機(jī)調(diào)試的能力
如何生成P12證書
- 找到之前安裝的cer證書(在鑰匙串中),點(diǎn)擊右鍵導(dǎo)出
-
選擇存放的目錄
輸入密碼生成即可述么,一般不輸入方便使用
7蝌数、測(cè)試APP證書配置
1、配置cer證書
- 作用:用于決定哪臺(tái)電腦可以打包測(cè)試程序
- 結(jié)果:會(huì)生成
cer
證書,需要下載安裝證書
2度秘、配置APPID
- 作用:用于決定讓哪些
App
可以測(cè)試打包 - 結(jié)果:不會(huì)生成新的文件,之后會(huì)利用該AppID生成描述文件
- 類型:
1)明確的APPID
:可以做特殊功能:比如內(nèi)購/遠(yuǎn)程推送
2)模糊的APPID
:方便測(cè)試,但是不能做特殊功能
3顶伞、配置Device
- 作用:用于決定讓哪些真機(jī)可以用于測(cè)試打包
- 結(jié)果:不會(huì)生成新的文件,之后在生成描述文件時(shí)會(huì)需要選擇設(shè)備
4、配置描述文件
- 作用:將剛才配置的三個(gè)內(nèi)容聯(lián)系起來
- 結(jié)果:會(huì)生成新的文件,需要下載安裝(雙擊安裝即可,會(huì)自動(dòng)安裝到Xcode中)
5剑梳、總結(jié):
- 最終生成兩個(gè)文件:證書文件和描述文件
8唆貌、推送證書到期處理
推送證書有時(shí)間期限的,有時(shí)我們應(yīng)用突然接不到消息了垢乙,有可能就是證書過期了锨咙,有效期一般為1年左右,那有效期快過了怎么處理呢追逮?
解決方案:
1酪刀、刪除MAC
上鑰匙串訪問中對(duì)應(yīng)的推送證書
2、去開發(fā)者中心刪掉過期推送證書钮孵,重新按著上面的步驟重新來一遍
3骂倘、在第三方平臺(tái)上重新上傳新的.p12
證書
9、Metadata Reject
處于“Metadata Reject”
狀態(tài)的應(yīng)用巴席,通常不需要重新上傳應(yīng)用历涝,只需要把相應(yīng)的元數(shù)據(jù)信息修改好,在“Resolution Center”
給審核人員回復(fù)說明一下即可漾唉,如果選擇重新上傳應(yīng)用荧库,就會(huì)需要重新排隊(duì)等待審核
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
內(nèi)有發(fā)帖等UGC
(用戶產(chǎn)生內(nèi)容)功能电爹,必須提供用戶協(xié)議,并留有內(nèi)容舉報(bào)功能料睛,否則就會(huì)被審核拒絕丐箩。
解決方案:
1摇邦、注冊(cè)頁要有用戶隱私相關(guān)協(xié)議,如果沒有注冊(cè)功能屎勘,那就在初次登錄的時(shí)候彈出來讓用戶看施籍;或者就是登錄的時(shí)候加個(gè)同意用戶隱私協(xié)議的按鈕啊,必須點(diǎn)了勾選上才能登錄概漱。知乎底部加一個(gè)用戶協(xié)議
2丑慎、 朋友圈、動(dòng)態(tài)這種要有舉報(bào)功能即UGC
內(nèi)容需要有投訴舉報(bào)的地方
3瓤摧、可以在用戶生成內(nèi)容上添加上舉報(bào)按鈕竿裂,同時(shí)也要按相應(yīng)要求加入其他相關(guān)功能并立即執(zhí)行;用戶協(xié)議一般加在用戶的注冊(cè)入口照弥,iTC后臺(tái)的隱私協(xié)議中也需要填上腻异。
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
主要鼓勵(lì)用戶做任務(wù)这揣,和看廣告悔常,這種模式不被AppStore
接受
解決方案:
因?yàn)楸旧鞟pp的設(shè)計(jì)是觀看視頻和推廣,這些任務(wù)不能取消给赞,所以分為線上模式和審核模式机打,審核模式把相關(guān)任務(wù)屏蔽,關(guān)于金幣的字眼全部屏蔽片迅。在線上模式放開(注意:包括審核時(shí)所填寫的信息和宣傳圖片都不能帶有與金幣或者推廣任務(wù)相關(guān)的信息)
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.
其實(shí)就是新設(shè)備網(wǎng)絡(luò)權(quán)限第一次不能訪問,需要進(jìn)行監(jiān)聽加載數(shù)據(jù)障涯。iOS10 優(yōu)化APP首次安裝網(wǎng)絡(luò)權(quán)限提示方案罐旗。解決方案很簡(jiǎn)單,可以監(jiān)聽網(wǎng)絡(luò)狀態(tài)唯蝶,網(wǎng)絡(luò)連接時(shí)重新請(qǐng)求數(shù)據(jù)就可以了九秀。
11、測(cè)試設(shè)備數(shù)的限制
測(cè)試設(shè)備100個(gè)數(shù)目限制的詳細(xì)規(guī)則
每個(gè)開發(fā)者在一個(gè)
membership year
(從繳費(fèi)日開始算起粘我,一年之內(nèi)算一個(gè)membership year)中鼓蜒,只能有100個(gè)增加設(shè)備的名額,如果你增加一個(gè)設(shè)備征字,之后又將該設(shè)備刪掉都弹,并不會(huì)將用掉的名額恢復(fù)開發(fā)者在每個(gè)
membership year
開始的時(shí)候,team agent
和admin
角色可以選擇刪除一些設(shè)備來恢復(fù)資格匙姜,也可以清空所有設(shè)備來恢復(fù)到100次設(shè)備的名額畅厢。這個(gè)操作在team agent
和admin
在一次新的membership year
開始后即可使用。在使用時(shí)需要注意氮昧,先將需要?jiǎng)h除的設(shè)備刪掉框杜,然后才能添加需要新增的設(shè)備浦楣。一旦開始增加新設(shè)備,刪除設(shè)備以恢復(fù)名額的功能將不再可用咪辱。在以后整個(gè)
membership year
中振劳,刪除設(shè)備不會(huì)增加新的名額
舉個(gè)例子:
假如第一年你增加了70個(gè)設(shè)備,同時(shí)刪除了10個(gè)設(shè)備油狂,這個(gè)時(shí)候历恐,雖然你的設(shè)備數(shù)是60,但是可用的增加測(cè)試機(jī)的名額卻是只有30個(gè)
到了第二年专筷, 你延續(xù)開發(fā)者身份弱贼,在你第一次登錄進(jìn)去后, 你可以看到你的可用設(shè)備恢復(fù)成100-60=40個(gè)了仁堪,這個(gè)時(shí)候哮洽,你可以選擇刪除一些設(shè)備填渠,例如你又刪除了20個(gè)設(shè)備弦聂,這樣你的名額數(shù)變成了60個(gè)。之后你增加了1個(gè)設(shè)備氛什,因?yàn)槟氵x擇了增加新設(shè)備莺葫,蘋果認(rèn)為你以及放棄了刪除設(shè)備以恢復(fù)名額的機(jī)會(huì),這樣枪眉,你的名額就固定成59個(gè)了捺檬,以后刪除設(shè)備都不會(huì)增加新設(shè)備,直到你的下一個(gè)membership year開始時(shí)才又會(huì)有這樣的機(jī)會(huì)來刪除設(shè)備釋放名額
如果設(shè)備數(shù)達(dá)到上限贸铜,又急需要增加新設(shè)備怎么辦堡纬?對(duì)此你可以給蘋果的技術(shù)客服發(fā)郵件要求他們幫助刪除所有設(shè)備,并且恢復(fù)到增加100個(gè)測(cè)試設(shè)備的名額蒿秦。
其實(shí)有來
testflight
設(shè)備數(shù)都不是問題烤镐,完全是為測(cè)試準(zhǔn)備的
推送
1、本地推送通知的流程是怎樣的棍鳖?
UserNotifications
框架是針對(duì)遠(yuǎn)程和本地消息通知的框架炮叶,其流程主要分為以下4步:
1)注冊(cè)。通過調(diào)用requestAuthrization
這個(gè)方法渡处,通知中心會(huì)向用戶發(fā)送通知許可請(qǐng)求镜悉。用戶在彈出的alert請(qǐng)求中點(diǎn)擊“同意”按鈕,即可注冊(cè)
2)創(chuàng)建医瘫。首先設(shè)置信息內(nèi)容UNMutableNotificationContent
和觸發(fā)機(jī)制UNNotificationTrigger
侣肄;然后用這兩個(gè)值來創(chuàng)建UNNotificationRequest
;最后將request
加入到當(dāng)前通知中心UNUserNotificationCenter.current()
中
3)推送醇份。這一步想系統(tǒng)或者遠(yuǎn)程服務(wù)器推送通知的過程稼锅。收到通知后對(duì)應(yīng)的UI會(huì)顯示在手機(jī)界面上叮喳。
4)響應(yīng)。當(dāng)用戶看到通知后缰贝,點(diǎn)擊通知后會(huì)看到相應(yīng)的響應(yīng)選項(xiàng)馍悟。UNNotificationAction
和UNNotificationCategory
用于設(shè)置響應(yīng)選項(xiàng)
2、遠(yuǎn)程消息推送原理
1剩晴、應(yīng)用程序注冊(cè)APNS
消息推送锣咒。
2、iOS
從APNS Server
獲取devicetoken
赞弥,應(yīng)用程序接收device token
毅整。
3、應(yīng)用程序?qū)?code>device token發(fā)送給程序的PUSH
服務(wù)端程序绽左。
4悼嫉、服務(wù)端程序向APNS
服務(wù)發(fā)送消息。
5拼窥、APNS
服務(wù)將消息發(fā)送給iPhone
應(yīng)用程序戏蔑。