為了方便用戶充值,產(chǎn)品提出了一個新的需求,引導用戶在App Store綁定支付寶或者微信,除了圖文的教程外還需要做一個跳轉,點擊按鈕跳轉至App Store的賬戶設置頁面,方便用戶操作,并給出了知乎App中的一個具體案例:

點擊圖一的“去綁定支付寶”跳轉至圖二,這樣看似一個很簡單的需求卻遇到了坑(寫這個主要是沒有在網(wǎng)上找到相應的資料,讓看到的人少走一些彎路,也記錄下自己解決問題的過程)。
最開始想到的是能不能通過像打開設置頁面一樣,通過類似于:
NSString * urlScheme = @"App-Prefs:root=Bluetooth";// 藍牙
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlScheme] options:@{} completionHandler:nil];
通過一個特定的URL Scheme跳轉至賬戶設置頁,但是通過實踐,發(fā)現(xiàn)在iOS11下甚至連上面例子中的藍牙頁面都跳不了,只能跳轉至設置頁面,這中方案肯定行不通。
這個方案失敗后在網(wǎng)上瘋狂Google并查看文檔,切換各種關鍵字和中英文,結果都沒有找到解決方案,心理有點小失落,知乎不會是去蘋果開通了什么VIP服務跳過去的吧(開玩笑)。。
后面通過詢問,發(fā)現(xiàn)有不少App都實現(xiàn)了這個跳轉,這種大家都能做的需求,肯定有比較方便的解決方案,對比幾個App的跳轉,和直接跳轉App Store的行為有些類似,我猜測應該是一段類似于跳轉App Store的URL,但是這段URL是什么呢?網(wǎng)上也搜不到一點頭緒,于是使用Charles對支付寶App的跳轉進行了抓包(抓知乎的沒有得到有效信息),終于有了收獲(O(∩_∩)O哈哈~):


我攔截了支付寶跳轉時調(diào)用的鏈接,把返回的html代碼從上往下看了一遍,發(fā)現(xiàn)了圖四中的一段URL,非常有可能是跳轉到賬戶設置頁的URL,于是在自己的項目中進行測試:
NSURL *accountUrl = [NSURL URLWithString:@"https://finance-app.itunes.apple.com/account/edit?mt=8"];
if ([[UIApplication sharedApplication] canOpenURL:accountUrl]) {
if (([[UIDevice currentDevice].systemVersion doubleValue] >= 10.0)) {
[[UIApplication sharedApplication] openURL:accountUrl options:@{} completionHandler:nil];
} else {
[[UIApplication sharedApplication] openURL:accountUrl];
}
}
最終成功實現(xiàn)了跳轉,雖然只是個簡單的功能,但最終能通過自己的思考和行動去解決問題還是挺開心的。