一.真機調試
1. 什么是真機調試?
簡單理解就是將App項目運行到真機上進行測試
2.為什么要運行到真機上, 不是可以運行到模擬器上嗎?(APP發布之前一定要做真機調試!!!
)
真機和模擬器環境的差異
內存環境,網絡環境;
傳感器: 磁力計,陀螺儀,距離傳感器等;
特定功能:拍照, 打電話,發短信,藍牙等。
用戶體驗不一樣
3. 怎樣做真機調試?
Xcode7.0之前,并不是任何人,任何電腦,任何APP,任何真機設備都可以進行真機調試的
1. 限制人
必須擁有Apple ID([https://appleid.apple.com])
加入開發者計劃,升級為**開發者賬號**([https://developer.apple.com])
2. 限制電腦
配置與電腦關聯的cer證書
需要使用需要真機調試的電腦,生成CSR文件
CSR文件: 證書簽名請求文件
3. 限制App
配置需要真機測試App的BundleID
區分不同APP,就是通過App的唯一標識: BundleID
4. 限制真機設備
配置需要真機測試的真機UDID
蘋果每臺真機設備都擁有一個唯一標識:UDID
Xcode7.0之后, 做真機調試, 非常簡單 只需要擁有Apple ID即可, 不需要以上限制
4. 真機調試注意事項
1.以上步驟完成后,你會有兩個文件:cer文件,MobileProvision文件,只需要雙擊安裝即可.
cer證書被添加到鑰匙串中
描述文件被安裝到Xcode中
資源庫 -> MobileDevice -> Provisioning Profiles
2.必須保證cer證書和描述文件一致
Xcode -> targets -> build setting -> code signing
3.創建一個APP,并確認BundleID與配置一致
如果不一致, 修改XCode項目的BundleID, 與配置一致.
4.真機運行時, 如果發現真機設備無法選中, 查看項目最低部署版本是否過高, 大于真機設備的系統版本
如果真機設備系統版本過高, 則無法選中真機進行運行
5. 備注補充
開發者賬號分類
個人賬號(99$)==688
功能:可以真機調試, 打包測試, 程序發布.
優點:申請速度快, 給錢就行, 1-3個工作日即可
缺點:
1.iTunes查看到的是個人信息, 無法間接為公司做宣傳
2.無法創建管理自己的開發團隊
公司賬號(99$)
功能:可以真機調試, 打包測試, 程序發布.
優點:
1.iTunes可以查看企業信息, 間接為公司做宣傳
2.可以創建和管理自己的開發團隊
缺點:
1.申請復雜,需要”鄧白氏”認證
2.申請周期比較長(連同”鄧白氏編碼”申請, 最好準備30天左右時間)
企業賬號(299$)
功能:可以真機調試, 打包測試
優點:
1.可以在企業內部隨意安裝到蘋果設備,不需要經過AppStore審核
2.可以創建和管理自己的開發團隊
3.版本更新迭代比較快, 不需要經過審核
缺點:
1.申請復雜,需要”鄧白氏”認證
2.申請周期比較長(連同”鄧白氏編碼”申請, 最好準備30天左右時間)
3.不能使用此證書,將App發布到AppStore
6. 開發經驗
1.盡量不要從網絡渠道以及代申請的公司去申請”鄧白氏編碼”.
花錢多, 而且申請下來的”鄧白氏編碼”不一定和蘋果服務器數據庫內一致, 最終不可用; 浪費時間和金錢
最正確的做法: 直接和蘋果客服MM聯系, 她們會告訴你申請流程, 需要提交哪些材料
客服電話: 400 670 1855
2.企業級賬號使用場景
App是針對某一特定人群制定使用.只在企業內部安裝, 無需發布到AppStore供他人下載
3.真機調試證書只能生成兩個
!!
也就意味著,只能綁定兩臺電腦進行真機調試
注意:如果別人已經配置了兩個,而且正在使用,不能隨便把別人的證書刪除;
解決方案:
此時只能使用從已經配置證書的電腦中,導出P12文件,進行共享;
作 用: 讓其他電腦設備不需要生成cer證書,也可以進行真機調試;
步驟圖解
4.測試的真機設備UDID最多只能添加100次, 而不是100臺
也就是說, 如果你加夠了100次之后, 即使刪除之前的設備名額, 也無法繼續添加
蘋果會在下一年, 給你一次刪除設備的機會, 你可以刪除一些設備, 來恢復一些名額.
但是, 一旦你添加了設備后, 蘋果則視為你自動放棄添加設備!!
步驟圖解
5.真機調試最終需要的文件
cer文件(或者p12文件)
MobileProvision文件
6.XCode7真機調試
只需要AppID,在Xcode7 -> preference -> Account 中添加即可
然后直接真機調試時,會彈出一個框,提示缺少描述文件. 直接點擊”Fix issue”選項,Xcode會自動請求蘋果服務器生成對應的描述文件
二. 打包測試
1. 什么是打包測試?
就是指將項目打包成為.ipa的壓縮包, 供指定設備安裝測試.
2. 為什么要做打包測試?
當進入到測試階段, 需要專門的測試人員對APP進行測試, 此時需要將APP安裝到測試人員的測試設備上, 此時最佳的方案, 就是直接將項目打包成為.ipa包, 供測試人員下載測試;
3. 怎樣進行打包測試?
1.限制人
必須擁有Apple ID([https://appleid.apple.com])
加入開發者計劃,升級為**開發者賬號**([https://developer.apple.com])
2.限制電腦
重新配置一個**打包測試**證書(Ad Hoc)
需要使用需要打包測試的電腦,生成CSR文件
CSR文件: 證書簽名請求文件
3.限制App
配置需要真機測試App的BundleID
區分不同APP,就是通過App的唯一標識: BundleID
4.限制真機設備
配置需要真機測試的真機UDID
蘋果每臺真機設備都擁有一個唯一標識:UDID
5.根據2,3,4重新生成打包測試描述文件
6.分別安裝cer證書和對應的描述文件
7.運行設備選擇真機后 選擇Product -> Archive
三. 程序發布
1. 什么是程序發布?
就是指將APP發布到AppStore, 供指定區域用戶下載
2. 為什么要程序發布?
賺錢.
3. 程序發布的步驟?
1.限制人
必須擁有Apple ID([https://appleid.apple.com])
加入開發者計劃,升級為**開發者賬號**([https://developer.apple.com])
2.限制電腦
重新配置一個**發布**證書
需要使用需要程序發布的電腦,生成CSR文件
CSR文件: 證書簽名請求文件
3.限制App
配置需要真機測試App的BundleID
區分不同APP,就是通過App的唯一標識: BundleID
4.根據2,3重新生成發布描述文件
** 注意: 程序發布, 是發布到AppStore, 所以不會有限制設備一項**
5.在開發中心新建App, 并填寫App相關的信息
就比如我們下載別人的app,就會發現里面有預覽圖片, app版本,以及功能簡介等信息, 那這些信息都是我們在這一步填寫的
6.寫好一個應用程序
注意:必須要有程序圖標,啟動圖片等,否則上傳會失敗
7.運行設備選擇真機后 選擇Product -> Archive
8.選擇 submit 打包項目,上傳構建版本
9.提交審核
4. 經驗補充
1.常規審核周期
審核周期2至20天不等, 而且他們碰到節假日還放假.
2.加急審核
概念: 簡單理解就是你聯系蘋果審核人員,跟他們說明理由,讓他們優先給你們審核
地址: [https://developer.apple.com/contact/app-store/?topic=expedite]
四. 內購和廣告
1. 什么是內購?
內購就是指,在APP內購買某些產品
如果你在App中銷售的商品,跟App有關(例如植物大戰僵尸中的道具,需要開啟關卡,擁有某種技能等等).那么,蘋果規定,必須通過內購方式購買.
內購分成: 3 : 7
2. 為什么做內購?
開發者創收的一種模式: free + 內購
某些業務必須使用內購
3. 內購的產品類型?
1.非消耗品(Nonconsumable)
買了就一直有,不會消耗,例如開啟關卡
一般指的是在游戲中一次性購買并擁有永久訪問權的物品或服務。非消耗品物品可以被用戶再次下載,并且能夠在用戶的所有設備上使用
2.消耗品(Consumable)
買了就用,用了就沒
專為支持可消耗的物品或服務設計的,消耗品購買不可被再次下載,根據其特點,消耗品不能在用戶的設備之間跨設備使用,除非自定義服務在用戶的賬號之間共享這些信息
3.其他類型
以下三種類別在iBooks中使用,目前iBooks不支持大陸市場
免費訂閱(Free subscriptions)
自動續費訂閱(Auto-renewing subscriptions)
非自動續費訂閱(Nonrenewing subscriptions)
4.內購的流程
類似于商場購物流程, 參照下圖
5.內購演練
在App管理中心,創建一個App,并填寫App信息
注意: 此處創建的App時,填寫套裝ID,時,必須選擇可以內購的套裝ID
創建內購商品,并添加到App,指定此App,可以銷售哪些商品
注意: 創建內購商品的前提,是你已經填寫了稅務/銀行信息,否則的話,無法創建
添加用于測試內購的測試賬號
創建App項目,開始開發
代碼實現內購流程
-
(1) 從APP服務器請求數據列表, 并行蘋果服務器請求可以銷售的商品列表
[XMGDataTool getGoodsWithResult:^(NSArray *goods) { NSArray *ids = [goods valueForKeyPath:@"goodID"]; // 請求哪些商品可以賣 NSSet *idSet = [NSSet setWithArray:ids]; SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:idSet]; request.delegate = self; [request start]; }];
-
(2) 在代理方法中獲取并顯示可銷售列表
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { self.products = response.products; }
-
(3) 用戶購買商品, 并監聽商品交易狀態
// 取出商品 SKProduct *product = self.products[indexPath.row]; // 購買商品 SKPayment *payMent = [SKPayment paymentWithProduct:product]; // 把憑證加入到隊列, 等待用戶付款 [[SKPaymentQueue defaultQueue] addPayment:payMent]; // 設置監聽者, 監聽整個交易狀態 [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
-
(4) 實現監聽交易狀態方法
// 交易狀態發生變化時調用 - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions { [transactions enumerateObjectsUsingBlock:^(SKPaymentTransaction * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { // SKPayment *payment , 小票 , 包含商品 // SKPaymentTransactionState transactionState 交易狀態 switch (obj.transactionState) { case SKPaymentTransactionStatePurchasing: NSLog(@"正在付款"); break; case SKPaymentTransactionStatePurchased: { NSLog(@"付款結束"); [queue finishTransaction:obj]; break; } case SKPaymentTransactionStateFailed: { NSLog(@"交易失敗"); [queue finishTransaction:obj]; break; } case SKPaymentTransactionStateRestored: NSLog(@"恢復購買"); break; case SKPaymentTransactionStateDeferred: NSLog(@"推遲付款"); break; default: break; } }]; }
4. 廣告
廣告的作用?
屬于創收的一種方式, 你在App內展示廣告,蘋果會付費給你,分成從原來的4:6 到 3:7
如何展示廣告
導入框架: iAd.framework
添加控件: ADBannerView
實現代理 ADBannerViewDelegate,優化用戶體驗