iOS實現灰度釋出App

TestFlight
TestFlight 是一款在 2014 年被蘋果收購的 iOS 測試工具。
開發者可以通過 TestFlight 來邀請使用者協助測試 App,待 App 完善之後,再提交正式版到 App Store,這對於開發者和使用者來說都是有益處的。
2018 年 9 月 26 日,支援通過 App Store Connect 生成一個公開的連結,邀請 TestFlight 測試者。
TestFlight 的限制和特點:
- 需要執行在 iOS8 及以上版本的裝置上
- 需要安裝 TestFlight App
- 有效時間(90天)
- 測試人員有最大上限(最多10000)
- TestFlight版本,可以提交反饋
- TestFlight版本,需要稽核(1天左右)
- TestFlight版本,可以生成公開連結( ofollow,noindex">https://testflight.apple.com/join/xxxxxx )
- TestFlight版本,可以修改公開連結直接跳轉 TestFlight 安裝 App( itms-beta://testflight.apple.com/join/xxxxxx )

1. 如何安裝 Beta 版 App?
- 在要用於測試的 iOS 裝置上安裝 TestFlight。
- 在 iOS 裝置上開啟您的邀請電子郵件或輕點公開連結。
- 輕點 View in TestFlight(在 TestFlight 中檢視)或 Start Testing(開始測試);或者,針對您想要測試的 App 輕點 Accept(接受)、Install(安裝)或 Update(更新)。
2. 如何判斷是否已經安裝了 TestFlight ?
通常我們會用 UIApplication
的 canOpenURL:
方法判斷其他 App 是否安裝。
iOS9
限制了 openURL:
和 canOpenURL:
方法的使用,如果我們要調起第三方 App,需要在 Info.plist
的 LSApplicationQueriesSchemes
Key 中新增相應 App 的 Scheme
才行,且新增的 Scheme
個數不能超過 50 個。
// iOS 原生程式碼 // 通過itms-bata://來判斷TestFlight是否安裝 NSString *customAppString = @"itms-beta://"; if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) { // TestFlight 已經安裝 } else { // TestFlight 沒有安裝 }
3. 如何實現點選 App 內邀請按鈕,跳轉 TestFlight 安裝 Beta 版 App ?
雖然有了TestFlight公開連結,大大減少了以往TestFlight安裝App的複雜度,但是還是不夠簡化,我們要做的是通過在App內,給灰度使用者一個提示框,使用者點選之後跳轉TestFlight直接安裝App。
1、進入 App Store Content ,輸入 Apple 開發者賬號登入。
2、登入成功之後,選擇"我的 App",進入 App 列表。(如果沒有 App,需要建立 App)
3、選擇"TestFlight",“新群組”,“構建版本”,“選擇要測試的構建版本”,“測試資訊”,提交稽核。
4、稽核通過之後,選擇“開啟連結”,將“https”替換成“itms-beta”即可。
【 TestFlight 公開連結 】 轉 【 TestFlight 安裝連結 】
// TestFlight 公開連結 https://testflight.apple.com/join/xxxxxx // TestFlight 安裝連結 itms-beta://testflight.apple.com/join/xxxxxx
iOS 跳轉 TestFlight 實現
// iOS 原生程式碼 NSString *customAppString = @"itms-beta://"; if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) { // TestFlight 已經安裝,開啟TestFlight安裝App頁面 customAppString = @"itms-beta://testflight.apple.com/join/xxxxxx"; } else { // TestFlight 沒有安裝,開啟AppStore安裝TestFlight頁面 customAppString = @"https://itunes.apple.com/cn/app/testflight/id899247664?mt=8"; } NSURL *customAppURL = [NSURL URLWithString:customAppString]; [[UIApplication sharedApplication] openURL:customAppURL options:@{} completionHandler:nil];
4.實現發起灰度釋出邀請

前臺:

邀請彈框
- 檢測使用者是否為灰度使用者
- 檢測灰度版本是否忽略
- 檢測灰度版本是否可用(多個條取最高版本)
// 前端頁面 JavaScript/">JavaScript 部分程式碼 // 點選下載灰度App // 說明: // Android連結:http://darendian.showjoy.com/appgray/xxxxxx.apk // iOS連結:itms-beta://testflight.apple.com/join/xxxxxx clickPublicBetaBtn() { const self = this; if (self.isWeb) { shopModal.toast({ message: '請在App內開啟' }); return; } const downloadURL = self.isIOS ? self.betaData.iOS : self.betaData.android; if (self.isAndroid) { // weex Android介面(開啟系統瀏覽器) shopBase.openBrowser(downloadURL); } else { // weex iOS介面(呼叫openURL) shopBase.openApp(downloadURL); } },
後臺:
後臺配置邀請資訊,下載連結,目標使用者,以及灰度App版本號,配置多專案時,取最高的App版本,且高版本灰度App包含低版本的所有內容。

配置平臺