友盟微信跋理、QQ等分享提示未驗證應(yīng)用配置


產(chǎn)品和客服反饋微信分享提示未驗證,讓我們排查原因恬总,看了微信文檔才知道前普,由于蘋果iOS 13系統(tǒng)版本安全升級,為此WechatOpenSDK在1.8.6版本進行了適配壹堰。 1.8.6版本支持Universal Links方式跳轉(zhuǎn)拭卿,對WechatOpenSDK分享進行合法性校驗。以下是我整理的配置流程和遇到坑贱纠。

確認微信App版本是否支持Universal Links

首先峻厚,確認微信(7.0.7或以上版本)的Universal Links在設(shè)備上正常,以確保openSDK與微信雙向使用Universal Links通信 Safari輸入https://help.wechat.com/app/

Safari 加載完成后需要下拉到頂谆焊,查看是否有打開微信入口(如下圖)惠桃。若無入口,可能是由于系統(tǒng)拉取微信Universal Links失敗辖试,請檢查手機網(wǎng)絡(luò)狀態(tài)是否正常辜王,或更新/重裝微信


微信Universal Links.png

配置我們App的蘋果Universal Links

請按照以下步驟將您的應(yīng)用和網(wǎng)站相關(guān)聯(lián)以獲取Universal Links

  • 將添加Associated Domains Entitlement到您的應(yīng)用。使用applinks服務(wù)前綴包含您的應(yīng)用程序?qū)⒅С值乃杏蛱曛础U垍㈤?a target="_blank">添加關(guān)聯(lián)的域權(quán)利誓禁。

  • 將Apple App Site Association文件添加到您的網(wǎng)站蜘拉。請參閱添加Apple App Site Association文件昔驱。

  • applinks密鑰添加到Apple App Site Association文件中庆锦。指定每個應(yīng)用程序?qū)⑻幚淼木W(wǎng)站部分硼婿。

具體操作
1. 登錄蘋果開發(fā)者后臺怒见,在設(shè)置證書的頁面找到 Identifiers -> App ID(設(shè)置包名)里俗慈,在對應(yīng)的BundleId下勾選 Associated Domains如下圖
名)里,在對應(yīng)的BundleId下勾選 Associated Domains如下圖
Associated Domains

保存設(shè)置遣耍,然后重新生成配置文件闺阱。

2. 在Xcode(11)里面添加Associated Domains

按照圖中的步驟添加好Universal Links

xcode配置

注意點:在 Associated Domains里面配置的Universal Links必須要以applinks:開頭,后面寫上域名不要加paths舵变,例如

applinks:www.apple.com
3. 配置apple-app-site-association

自己創(chuàng)建一個名叫 apple-app-site-association的json格式文件酣溃,注意文件命不需要添加的后綴。apple官方參照地址

{
    "applinks": {
        "apps": [],
        "details": [{
            "appID": "D3KQX62K1A.com.example.photoapp",
            "paths": ["/albums"]
            },
            {
            "appID": "D3KQX62K1A.com.example.cameraapp",
            "paths": ["*"]
            }
    }
}

  • details-- 鍵的值添加為字典數(shù)組的JSON表示纪隙,每個應(yīng)用程序一個字典赊豌。對于每個特定于應(yīng)用程序的詞典(上面就表示了同一個teamid下的4個不同的應(yīng)用),包括 和 鍵:appIDpaths

  • appID-- 將處理格式為的鏈接的應(yīng)用程序的標識TeamIdentifier.bundle identifier(開發(fā)者賬號teamID.app的bundle identifier)绵咱。

  • paths-- 應(yīng)用程序支持的網(wǎng)站各個部分碘饼,以路徑字符串數(shù)組形式指定。只有這些指定的路徑的鏈接悲伶,才能被app所處理, *符號寫法代表了可識別域名下所有鏈接 建議Universal Links配置path艾恼,例如/app/*, 避免全域命中Universal Links跳轉(zhuǎn)。我之前就是用全域通配麸锉,提供給合作方的H5頁面钠绍,在某些情況(微信瀏覽然后通過Safari加載的時候;合作方App加載H5的時候)下會打開或者跳轉(zhuǎn)到自己App淮椰。遇到這種情況只能重新配置apple-app-site-association文件的paths五慈,而且分享還會出現(xiàn)異常。

  • 例如: 附加 * 到特定的網(wǎng)址(例如/ videos/samples/2015/*)以指定/下的所有路徑videos/samples/2015/主穗。使用 ? 匹配任何單個字符泻拦,如/photography/*/samples/201?/mypage。使用獨立* 網(wǎng)站來指定整個網(wǎng)站忽媒。
    通過“NOT ”在路徑字符串的開頭添加(包括T后面的空格)來標識不應(yīng)處理的區(qū)域争拐。
    注意 用于在paths 數(shù)組中指定網(wǎng)站路徑的字符串 區(qū)分大小寫。僅將URL的路徑部分用于比較晦雨。其他組件(例如查詢字符串或片段標識符)將被忽略架曹。

4.上傳apple-app-site-association到服務(wù)器(服務(wù)器需要支持https)

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

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

注意事項 : iOS 9.2之前奥邮,不用跨域都可以跳轉(zhuǎn)万牺, iOS 9.2之后罗珍,必須跨域才能進行跳轉(zhuǎn)到原生app上。
iOS只會在App第一次啟動時請求一次apple-app-site-association文件脚粟,服務(wù)器上該文件的更新不會讓iOS本地的文件同步更新覆旱。

5. 工程中添加處理方法

現(xiàn)在用戶點擊我們配置的域名下的匹配的鏈接,直接可以進我們的app了。但是,如果想要能夠獲取到用戶進來的鏈接,根據(jù)鏈接來處理,需要展示給用戶的信息
那么需要在工程里的 AppDelegate 里實現(xiàn) 方法

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
{
    if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
        NSURL *webpageURL = userActivity.webpageURL;
        NSString *host = webpageURL.host;
        if ([host isEqualToString:@"apple..com"]) {
            //進行我們需要的處理
        }
        else {
            [[UIApplication sharedApplication]openURL:webpageURL];
        }
    }
    return YES;
}

當 userActivity 是 NSUserActivityTypeBrowsingWeb 類型, 則意味著它是由Universal Links進來,也就是處理邏輯的時候核无。

確認App的Universal Links配置成功

用xcode 跑一個debug 包(卸載之前包)扣唱,通過 Safari輸入Universal Links(包括完整路徑)+隨機字符串(例如: abc),因為第三方分享會在后面添加參數(shù)团南,所以添加隨機字符噪沙,加載完成后,入口默認是在最頂上看不到吐根,需要往上滑頂才能看到曲聂,如果能展示你的App就代表通配符*配置成功了。

通Safari打開通用鏈接展示的效果.png

集成微信分享的配置和Universal Links配置

集成微信SDK( 如果已經(jīng)集成了分享功能佑惠,可以忽略部分步驟)

  • 在 Xcode 中朋腋,選擇你的工程設(shè)置項,選中“TARGETS”一欄膜楷,在“info”標簽欄的“URL type“添加“URL scheme”為你所注冊的應(yīng)用程序 id


    添加微信URL scheme
  • 在Xcode中旭咽,選擇你的工程設(shè)置項,選中“TARGETS”一欄赌厅,在 “info”標簽欄的“LSApplicationQueriesSchemes“添加weixin 和weixinULAPI( 如果已經(jīng)集成了分享功能穷绵,應(yīng)該已經(jīng)配置好了)

    添加白名單

  • 注冊微信、實現(xiàn)微信代理等操作 (如果是集成了友盟按照友盟注冊和實現(xiàn)代理)

  • 微信開發(fā)者后臺添加Universal Links (這步官網(wǎng)沒有提示很容易遺漏)

    微信后臺添加Universal Links

  • 最后可以使用WXApi新增了自檢函數(shù)checkUniversalLinkReady: 自檢函數(shù)排查接入問題

//在register之前打開log, 后續(xù)可以根據(jù)log排查問題
[WXApi startLogByLevel:WXLogLevelDetail logBlock:^(NSString *log) {
    NSLog(@"WeChatSDK: %@", log);
}];

//務(wù)必在調(diào)用自檢函數(shù)前注冊
[WXApi registerApp:APP_ID universalLink:UNIVERSAL_LINK];

//調(diào)用自檢函數(shù)
[WXApi checkUniversalLinkReady:^(WXULCheckStep step, WXCheckULStepResult* result) {
    NSLog(@"%@, %u, %@, %@", @(step), result.success, result.errorInfo, result.suggestion);
}];

WXULCheckStep值說明:
step = WXULCheckStepParams: 參數(shù)檢查 step = WXULCheckStepSystemVersion: 當前系統(tǒng)版本檢查 step = WXULCheckStepWechatVersion: 微信客戶端版本檢查 step = WXULCheckStepSDKInnerOperation: 微信SDK內(nèi)部操作檢查 step = WXULCheckStepLaunchWechat: App拉起微信檢查 step = WXULCheckStepBackToCurrentApp: 由微信返回當前App檢查 step = WXULCheckStepFinal: 最終檢查 會依次回調(diào)這7個step特愿,當回調(diào)了WXULCheckStepFinal仲墨,說明檢測通過,SDK接入成功揍障。 任一step回調(diào)的result.success為NO, 流程終止目养,后續(xù)不再回調(diào),可以根據(jù)result.errorInfo的查看當前步驟錯誤的原因毒嫡,根據(jù)result.suggestion修復(fù)問題.

以上微信相關(guān)配置來自以 微信官方文檔

配置中遇到坑

  • 我的工程是集成了友盟精簡版微信分享癌蚁,友盟版本需要6.9.7以上才支持了WechatOpenSDK 1.8.6,而且需要完整版兜畸,所以用精簡版的同學(xué)需要更換為完整版努释。

    image.png

  • 我的項目集成了微信支付,微信和友盟完整版分享會有沖突咬摇,那就不能用cocoapods 集成了伐蒂,需要更換為手動集成微信SDK和友盟分享????。在友盟SDK中刪除libWeChatSDK.a WXApiObject.h 最后如下圖

    微信

  • 所有都集成好了肛鹏,調(diào)試手機微信分享沒有提示未驗證??逸邦,打包測試安裝后還是未驗證汰翠,各種排查,各種查資料??昭雌,原來授權(quán)不是及時的,到了第二天才生效了健田。

  • 還有測試直接不能分享烛卧,授權(quán)頁面就直接自動返回App。又是各種排查????????妓局,最后重啟手機問題解決了总放。

  • 舊版本沒有正確接入新版OpenSDK(有分享二跳,授權(quán)登錄二次確認的情況)好爬,新版 本剛修復(fù)這個問題局雄。需要等新版本放量上去讓整體錯誤率下降到90%以下才會從未驗證應(yīng)用中移除。
    例:前一天你的App總共分享了100次消息到微信(微信以AppID來統(tǒng)計存炮,只計算1.8.6以及以上版本的分享)炬搭,其中正確的次數(shù)必須要高于10次。

  • paths用全域通配"paths": ["*"]穆桂, 導(dǎo)致全域命中Universal Links跳轉(zhuǎn)宫盔。提供給合作方的H5頁面,在某些情況(微信瀏覽然后通過Safari加載的時候享完;合作方App加載H5的時候)下會打開或者跳轉(zhuǎn)到自己App灼芭。各方合作方都來投訴,沒辦法只能重新配置apple-app-site-association文件的"paths": ["/app/*"],修改完成后般又,重新卸載安裝App測試發(fā)現(xiàn)不會再跳轉(zhuǎn)了彼绷,線上App微信分享也正常,感覺事情就要結(jié)束了??茴迁。告訴合作方已經(jīng)修改好了寄悯,但是他們手機安裝我們的App已經(jīng)授權(quán),緩存了Universal Link記錄堕义,依然會跳轉(zhuǎn)到我們的App热某,于是就各種查資料、看官方文檔沒有關(guān)于緩存時間和觸發(fā)apple-app-site-association更新的時機??胳螟。經(jīng)過自己的測試只有卸載重裝昔馋、更新App會觸發(fā)apple-app-site-association更新的時機,新的Universal Links才會生效糖耸。反復(fù)折騰了一天秘遏,只希望蘋果明天會更新緩存(我知道這個是不能的,只是幻想)嘉竟。

  • 第二天邦危,沒有等來更新緩存的好消息洋侨,卻給我迎頭一棒,在系統(tǒng) iOS 14以上的新用戶微信無法分享倦蚪,正在連接希坚,就直接跳回App,導(dǎo)致無法分享陵且。iOS 14 以下可以正常使用裁僧。


    image.png

后面更新了微信后臺的Universal Link,發(fā)現(xiàn)線上用戶都無法使用微信分享慕购,提示Universal Link驗證失敗??聊疲,趕緊恢復(fù)了之前的Universal Link。只能等待新版上線開啟新的Universal Link沪悲,到時候老版本都會無法分享获洲,有投訴就只能讓用戶更新App。感覺微信太不厚道了殿如,appid已經(jīng)配置了贡珊,你不能分享失敗啊涉馁!回到以前分享成功顯示未驗證飞崖,我也能接受啊谨胞!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末固歪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子胯努,更是在濱河造成了極大的恐慌牢裳,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叶沛,死亡現(xiàn)場離奇詭異蒲讯,居然都是意外死亡,警方通過查閱死者的電腦和手機灰署,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門判帮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人溉箕,你說我怎么就攤上這事晦墙。” “怎么了肴茄?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵晌畅,是天一觀的道長。 經(jīng)常有香客問我寡痰,道長抗楔,這世上最難降的妖魔是什么棋凳? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮连躏,結(jié)果婚禮上剩岳,老公的妹妹穿的比我還像新娘。我一直安慰自己入热,他們只是感情好拍棕,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著才顿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪尤蒿。 梳的紋絲不亂的頭發(fā)上郑气,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音腰池,去河邊找鬼尾组。 笑死,一個胖子當著我的面吹牛示弓,可吹牛的內(nèi)容都是我干的讳侨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼奏属,長吁一口氣:“原來是場噩夢啊……” “哼跨跨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起囱皿,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤勇婴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嘱腥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體耕渴,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年齿兔,在試婚紗的時候發(fā)現(xiàn)自己被綠了橱脸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡分苇,死狀恐怖添诉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情医寿,我是刑警寧澤吻商,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站糟红,受9級特大地震影響艾帐,放射性物質(zhì)發(fā)生泄漏乌叶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一柒爸、第九天 我趴在偏房一處隱蔽的房頂上張望准浴。 院中可真熱鬧,春花似錦捎稚、人聲如沸乐横。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽葡公。三九已至,卻和暖如春条霜,著一層夾襖步出監(jiān)牢的瞬間催什,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工宰睡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒲凶,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓拆内,卻偏偏與公主長得像旋圆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子麸恍,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355