真機調試、打包測試、發布、內購,廣告

一.真機調試

1.什么是真機調試?

簡單理解就是將App項目運行到真機上進行測試.

2.真機調試的必要

真機和模擬器環境的差異:

  • 內存環境,網絡環境;
  • 傳感器: 磁力計,陀螺儀,距離傳感器等;
  • 特定功能:拍照, 打電話,發短信,藍牙等(真機才有)
  • 用戶體驗不一樣所以APP發布之前一定要做真機調試!!!
3.怎樣做真機調試?

Xcode7.0之前(并不是任何人,任何電腦,任何APP,任何真機設備都可以進行真機調試的)
①限制人

②限制電腦

  • 配置與電腦關聯的cer證書 ,需要使用需要真機調試的電腦,生成CER文件 (CER文件: 證書簽名請求文件)

③限制App

  • 配置需要真機測試App的BundleID (區分不同APP,就是通過App的唯一標識: BundleID)

④限制真機設備

  • 配置需要真機測試的真機UDID (蘋果每臺真機設備都擁有一個唯一標識:UDID)

Xcode7.0之后

  • 只需要AppID(在Xcode7 -> preference -> Account 中添加即可。 此時直接真機調試時,會彈出一個框,提示缺少描述文件. 直接點擊”Fix issue”選項,Xcode會自動請求蘋果服務器生成對應的描述文件)
4.真機調試注意事項

①以上步驟完成后,你會有兩個文件:cer文件,MobileProvision文件,只需要雙擊安裝即可.

  • cer證書被添加到鑰匙串中
  • 描述文件被安裝到Xcode中 (資源庫 -> MobileDevice -> Provisioning Profiles)

②必須保證cer證書和描述文件一致( Xcode -> targets -> build setting -> code signing)

③ 創建一個APP,并確認BundleID與配置一致 (如果不一致, 修改XCode項目的BundleID, 與配置一致)

④真機運行時, 如果發現真機設備無法選中,查看項目最低部署版本是否過高, 大于真機設備的系統版本

5.補充

開發者賬號分類:

①個人賬號(99$)==688

  • 功能:可以真機調試, 打包測試, 程序發布
  • 優點:申請速度快, 給錢就行, 1-3個工作日即可
  • 缺點:
    • iTunes查看到的是個人信息, 無法間接為公司做宣傳
    • 無法創建管理自己的開發團隊

②公司賬號(99$)

  • 功能:可以真機調試, 打包測試, 程序發布
  • 優點:
    • iTunes可以查看企業信息, 間接為公司做宣傳
    • 可以創建和管理自己的開發團隊
  • 缺點:
    • 申請復雜,需要”鄧白氏”認證
    • 申請周期比較長(連同”鄧白氏編碼”申請, 最好準備30天左右時間)

③企業賬號(299$)

  • 功能:可以真機調試, 打包測試
  • 優點:
    • 可以在企業內部隨意安裝到蘋果設備,不需要經過AppStore審核
    • 可以創建和管理自己的開發團隊
    • 版本更新迭代比較快, 不需要經過審核
  • 缺點:
    • 申請復雜,需要”鄧白氏”認證
    • 申請周期比較長(連同”鄧白氏編碼”申請, 最好準備30天左右時間)
    • 不能使用此證書,將App發布到AppStore
6.開發經驗

①盡量不要從網絡渠道以及代申請的公司去申請”鄧白氏編碼”,因為花錢多, 而且申請下來的”鄧白氏編碼”不一定和蘋果服務器數據庫內一致, 最終導致不可用,浪費時間和金錢。最正確的做法: 直接和蘋果客服MM聯系, 她們會告訴你申請流程, 需要提交哪些材料。客服電話: 400 670 1855

②企業級賬號使用場景:

  • App是針對某一特定人群制定使用.只在企業內部安裝, 無需發布到AppStore供他人下載

③默認真機調試證書只能生成兩個!!(也就意味著,只能綁定兩臺電腦進行真機調試)

  • 注意:如果別人已經配置了兩個,而且正在使用不能隨便把別人的證書刪除。
  • 解決方案: 此時只能使用從已經配置證書的電腦中,導出P12文件,進行共享( 讓其他電腦設備不需要生成cer證書,也可以進行真機調試)。

④測試的真機設備UDID最多只能添加100次, 而不是100臺。也就是說, 如果你加夠了100次之后, 即使刪除之前的設備名額, 也無法繼續添加。蘋果會在下一年, 給你一次刪除設備的機會, 你可以刪除一些設備, 來恢復一些名額.但是, 一旦你添加了設備后, 蘋果則視為你自動放棄添加設備!!

二.打包測試

1.什么是打包測試?
  • 就是指將項目打包成為.ipa的壓縮包, 供指定設備安裝測試.
2.為什么要做打包測試?
  • 當進入到測試階段, 需要專門的測試人員對APP進行測試, 此時需要將APP安裝到測試人員的測試設備上, 此時最佳的方案, 就是直接將項目打包成為.ipa包, 供測試人員下載測試。
3.怎樣進行打包測試?

步驟:

  • 1.登錄apple的開發者主頁:developer.apple.com(限制人必須有apple ID 和開發者賬號)

  • 2.選擇Ad Hoc生成一個ios_distribution.cer: 讓電腦具備打包程序的能力(限制電腦得配置打包測試證書,再利用該電腦生成CER文件)

  • 3.新建一個App ID : 確定哪個APP可以被打包測試(限制app
    配置需要真機測試App的BundleID)

  • 4.利用用戶設備的UDID注冊設備(限制真機設備,確定哪些設備可以被打包測試,蘋果每臺真機設備都擁有一個唯一標識:UDID)

  • 5.選擇Ad Hoc利用ios_distribution.cer + 設備UDID + App ID --> 描述文件

    • 描述文件的作用:
      • 能知道在哪臺電腦上, 為哪臺設備打包哪個程序
      • 哪臺設備需要測試哪個程序.
  • 6.安裝證書和描述文件

    • ios_distribution.cer
    • nj_iphone6_news.mobileprovision
  • 7.項目Scheme右邊的設備選擇iOS Device

  • 8.點擊Xcode的菜單Product --> Archive --> Distribute --> ....Ad Hoc... --> 選擇對應的描述文件

  • 9.生成一個ipa文件,發給測試人員和客戶 ipa本質是zip (android的安裝包是APK格式,本質也是zip)

拓展:TestFlight(Beta版本測試):

步驟:

1.測試者提供他們的郵箱

2.開發者登錄iTunes Connect給測試者發送郵件邀請

3.測試者接受邀請,通過TestFlight軟件下載安裝程序

對比打包測試:

①步驟很少,操作簡單

②打包測試更多的還是針對公司內部測試人員,TestFlight更多的是面向真正的用戶。

三.程序發布

1. 什么是程序發布?
  • 就是指將APP發布到AppStore, 供指定區域用戶下載
2. 為什么要程序發布?
  • 你確定要問這個問題??? 好吧, 答案是賺錢
3. 程序發布的步驟?

①限制人

②限制電腦

  • 重新配置一個發布證書需要使用需要程序發布的電腦,生成CER文件( CER文件: 證書簽名請求文件)

③限制app

  • 配置需要真機測試App的BundleID 。區分不同APP,就是通過App的唯一標識: BundleID

④根據2,3重新生成發布描述文件

⑤在開發中心新建App, 并填寫App相關的信息

  • 就比如我們下載別人的app,就會發現里面有預覽圖片, app版本,以及功能簡介等信息, 那這些信息都是我們在這一步填寫的

⑥準備好一個寫好的完整應用程序

  • 注意:必須要有程序圖標,啟動圖片等,否則上傳會失敗

⑦運行設備選擇真機后 選擇Product -> Archive
⑧選擇 submit 打包項目,上傳構建版本
⑨提交審核

4.經驗補充

1.常規審核周期

  • 審核周期2至20天不等, 而且他們碰到節假日還放假,遇到老板催的緊真蛋疼。。

2.加急審核

3.加急審核注意事項(親身體驗)

  • 加急審核,審核更加嚴格,親身體驗
  • 首次發布,一般加急審核不給審批
  • 加急審核申請一定要理由足夠強大(可以說:上線后發現重大Bug)
  • 加急審核好爽, 只要你申請加急審核通過了. 那么只要你的app沒有上架,就會一直處于加急審核狀態, 一直到你上架為止, 此次加急才算結束(曾經有連續被拒7次經驗,歷時才10天)
  • 加急審核有次數限制(一年好像有3次, 我只用過一次,沒測試過)

四.內購

1. 什么是內購?
  • 內購就是指,在APP內購買某些產品。
    如果你在App中銷售的商品,跟App有關(例如植物大戰僵尸中的道具,需要開啟關卡,擁有某種技能等等).那么,蘋果規定,必須通過內購方式購買.
    內購分成: 3 : 7
2. 為什么做內購?
  • 開發者創收的一種模式: free + 內購。
  • 某些業務必須使用內購。
3. 內購的產品類型?

①非消耗品(Nonconsumable)

  • 買了就一直有,不會消耗,例如開啟關卡
    一般指的是在游戲中一次性購買并擁有永久訪問權的物品或服務。非消耗品物品可以被用戶再次下載,并且能夠在用戶的所有設備上使用

②消耗品(Consumable)

  • 買了就用,用了就沒
    專為支持可消耗的物品或服務設計的,消耗品購買不可被再次下載,根據其特點,消耗品不能在用戶的設備之間跨設備使用,除非自定義服務在用戶的賬號之間共享這些信息

③其他類型

  • 以下三種類別在iBooks中使用,目前iBooks不支持大陸市場
    免費訂閱(Free subscriptions)
    自動續費訂閱(Auto-renewing subscriptions)
    非自動續費訂閱(Nonrenewing subscriptions)

拓展:內購演練

  1. 在App管理中心,創建一個App,并填寫App信息
    注意: 此處創建的App時,填寫套裝ID,時,必須選擇可以內購的套裝ID

  2. 創建內購商品,并添加到App,指定此App,可以銷售哪些商品
    注意: 創建內購商品的前提,是你已經填寫了稅務/銀行信息,否則的話,無法創建

  3. 添加用于測試內購的測試賬號

  4. 創建App項目,開始開發

  5. 代碼實現內購流程如下:
    (1) 從APP服務器請求數據列表, 并向蘋果服務器請求可以銷售的商品列表

     [YPDataTool 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;
     }
    }];
}

五.廣告

1.廣告的作用?
  • 屬于創收的一種方式, 你在App內展示廣告,蘋果會付費給你,分成從原來的4:6 到 3:7
2.如何展示廣告?
  • 導入框架: iAd.framework
  • 添加控件: ADBannerView
  • 實現代理 ADBannerViewDelegate,優化用戶體驗
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容