iOS13+ 通用鏈接(Universal Link)設(shè)置 解決APP接入微信支付和分享問題

最近項目中拦键,微信SDK針對 iOS 13系統(tǒng)版本安全性男娄,進行了對應(yīng)升級,微信SDK版本為openSDK(1.8.6+)十艾。在微信官方介紹中抵代,1.8.6.1 版本開始支持Universal Links方式跳轉(zhuǎn),對openSDK分享進行合法性校驗忘嫉。
*環(huán)境
SDK版本: SDK1.8.6或以上
微信版本: 7.0.7或以上
系統(tǒng)版本: iOS12或以上

一荤牍、微信開放平臺配置Universal Links

開發(fā)平臺.jpg

1.配置應(yīng)用的Universal Links

1)根據(jù) 蘋果文檔 配置你應(yīng)用的Universal Links
微信對Universal Links配置要求
a)Universal Links必須支持https
b)Universal Links配置的paths不能帶query參數(shù)
c)微信使用Universal Links拉起第三方App時,會在Universal Links末尾拼接路徑和參數(shù)庆冕,因此App配置的paths必須加上通配符/*
1.2 確認App的Universal Links配置成功
微信使用第三方App的Universal Links喚起第三方App時康吵,會在Universal Links末尾拼接路徑和參數(shù),因此開發(fā)者Universal Links配置必須加上通配符“*”愧杯,并測試Universal Links拼接字符串能否喚起app
例如:我微信開發(fā)平臺配置Universal Links為:https://www.abctest.cn/

二涎才、配置apple-app-site-association

APPID.jpg

appID格式為:TeamID + . + BundleID
TeamID在開發(fā)者平臺找

2.1注意事項:
自己創(chuàng)建一個名叫 apple-app-site-association的json格式文件鞋既,注意文件命不需要添加的后綴力九。apple官方參照地址
注意 用于在paths 數(shù)組中指定網(wǎng)站路徑的字符串 區(qū)分大小寫。僅將URL的路徑部分用于比較邑闺。其他組件(例如查詢字符串或片段標識符)將被忽略跌前。
2.2上傳apple-app-site-association到服務(wù)器(服務(wù)器需要支持https)

上傳 apple-app-site-association文件到域名的根目錄或者.well-known子目錄下
能打開https://www.abctest.cn/apple-app-site-associationhttps://www.abctest.cn/.well-known/apple-app-site-association
當我們的App在設(shè)備上第一次運行時,如果支持Associated Domains功能陡舅,那么iOS會自動去獲取域名下的apple-app-site-association文件

  • 上傳成功后抵乓,我們可以用蘋果提供的驗證網(wǎng)址來直接驗證apple-app-site-association設(shè)置是否生效。

三靶衍、開發(fā)者平臺證書及Xcode工程配置

3.1 登錄蘋果開發(fā)者后臺灾炭,在設(shè)置證書的頁面找到 Identifiers -> App ID(設(shè)置包名)里,在對應(yīng)的BundleId下勾選 Associated Domains如下圖

開發(fā)者平臺.png

保存設(shè)置颅眶,然后重新生成配置文件蜈出。

3.2 Xcode工程配置

·在 Xcode 中,選擇你的工程設(shè)置項涛酗,選中“TARGETS”一欄铡原,在“info”標簽欄下的“URL type“添加“URL scheme”為你所注冊的應(yīng)用程序 id:在“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI(如下圖所示)

info.png

·打開Associated Domains開關(guān)偷厦,將Universal Links域名加到配置上
Domains.png

注意點:在 Associated Domains里面配置的Universal Links必須要以applinks:開頭,后面寫上域名燕刻。
例如:applinks:www.abctest.cn

四只泼、具體實現(xiàn)(以iOS項目Swift語言為例)

1、在AppDelegate.swift文件的didFinishLaunchingWithOptions方法里注冊WXApi:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) >-> Bool {
WXApi.registerApp(kWeixinAppKey, universalLink: kUniversalLink)
return true
}

2卵洗、重寫 AppDelegate 的 handleOpenURL 和 openURL 方法:

// iOS9.0以前使用
func application(_ application: UIApplication, handleOpen url: URL) -> Bool {
let handleUrlStr = url.absoluteString
if let handleUrl = URL(string: handleUrlStr) {
return WXApi.handleOpen(handleUrl, delegate: WXApiManager.sharedInstance)
}
return false
}
// iOS9.0及以后推薦使用
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let handleUrlStr = url.absoluteString
if let handleUrl = URL(string: handleUrlStr) {
return WXApi.handleOpen(handleUrl, delegate: WXApiManager.sharedInstance)
}
return false
}

// 必須實現(xiàn)
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
let handleUrlStr = url.absoluteString
if let handleUrl = URL(string: handleUrlStr) {
return WXApi.handleOpen(handleUrl, delegate: WXApiManager.sharedInstance)
}
return false
}

3请唱、重寫AppDelegate的continueUserActivity方法:

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
return WXApi.handleOpenUniversalLink(userActivity, delegate: WXApiManager.sharedInstance)
}

四、注意事項

1:必須在IOS9及以上过蹂。
2:當在瀏覽器中點擊Universal Links時籍滴,如果這個link和頁面是同一個域名,則不走調(diào)起榴啸,而是當做普通鏈接在當前瀏覽器打開孽惰。
3:在測試階段,微信分享或者支付不要打開代理抓包鸥印,這樣也不走調(diào)起.—— 特別注意留心
4:成功調(diào)起app后勋功,app的右上角的 state bar有在safari(letv.com)中打開的選項,如果你點擊了它库说,它會跳轉(zhuǎn)到safari狂鞋,同時系統(tǒng)會認為你選擇使用safari打開該域名的鏈接,而不調(diào)起app潜的。以后你再點擊該鏈接骚揍,它只會在safari里面跳轉(zhuǎn)。

該如何再次開啟:

(1) 在safari頁面中啰挪,手指往下拉動一下頁面信不,會顯示出一個“隱藏”的banner,俗稱 smart banner亡呵,右側(cè)是一個button:打開(open)抽活,點擊它,就又會開啟app跳轉(zhuǎn)功能锰什。
(2) 把鏈接粘貼到備忘錄中下硕,長按后選擇 在XXAPP中打開。

至此汁胆,基本的配置已經(jīng)結(jié)束梭姓,如果遇到問題,可以留言交流嫩码。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載誉尖,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末谢谦,一起剝皮案震驚了整個濱河市释牺,隨后出現(xiàn)的幾起案子萝衩,更是在濱河造成了極大的恐慌,老刑警劉巖没咙,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猩谊,死亡現(xiàn)場離奇詭異,居然都是意外死亡祭刚,警方通過查閱死者的電腦和手機牌捷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來涡驮,“玉大人暗甥,你說我怎么就攤上這事∽酵保” “怎么了撤防?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棒口。 經(jīng)常有香客問我寄月,道長,這世上最難降的妖魔是什么无牵? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任漾肮,我火速辦了婚禮,結(jié)果婚禮上茎毁,老公的妹妹穿的比我還像新娘克懊。我一直安慰自己,他們只是感情好七蜘,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布谭溉。 她就那樣靜靜地躺著,像睡著了一般崔梗。 火紅的嫁衣襯著肌膚如雪夜只。 梳的紋絲不亂的頭發(fā)上垒在,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天蒜魄,我揣著相機與錄音,去河邊找鬼场躯。 笑死谈为,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的踢关。 我是一名探鬼主播伞鲫,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼签舞!你這毒婦竟也來了秕脓?” 一聲冷哼從身側(cè)響起柒瓣,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吠架,沒想到半個月后芙贫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡傍药,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年磺平,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拐辽。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拣挪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出俱诸,到底是詐尸還是另有隱情菠劝,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布睁搭,位于F島的核電站闸英,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏介袜。R本人自食惡果不足惜甫何,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遇伞。 院中可真熱鬧辙喂,春花似錦、人聲如沸鸠珠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽渐排。三九已至炬太,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間驯耻,已是汗流浹背亲族。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留可缚,地道東北人霎迫。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像帘靡,于是被迫代替她去往敵國和親知给。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容