微信分享顯示“未驗證應用”問題

一、前言

最近項目發佈iOS版本後,發現微信分享的時候,分享下方提示(爲驗證應用)
在這裏插入圖片描述
遇到微信相關問題,先上微信開放社區搜索,前往微信開放社區。搜到了微信官方說明:《微信開放平臺移動應用 SDK 更新提醒》
文中提到了一個叫Universal Links的東西,下面就整理下如何弄這個Universal Links

二、關於Universal Links

iOS9之前,要在瀏覽器中喚醒APP,我們通常使用scheme。這種方式需要提前判斷系統中是否安裝了能夠響應此schemeapp,並且這種方式在微信被禁用。

Universal Links可以鏈接到您應用中的內容並安全地共享數據. 當用戶點擊Universal Links時,iOS會將鏈接直接重定向到您的應用程序,而無需通過Safari或您的網站進行路由。此外,由於Universal Links是標準HTTPHTTPS鏈接,因此一個URL既適用於您的網站,也適用於您的應用程序。如果未安裝您的應用程序,則系統會在Safari中打開URL,以使您的網站能夠處理它。當用戶安裝您的應用程序時,iOS會檢查存儲在Web服務器上的文件,以驗證您的網站是否允許您的應用程序代表其打開URL。只有您才能將此文件存儲在服務器上,以確保網站和應用程序之間的關聯。

注意:設置支持Universal Links你必須有一個支持https的域名

三、如何添加Universal Links

1、勾選Associated Domains(關聯域名)

登錄蘋果開發者後臺,在設置證書的頁面找到Identifiers -> App ID(設置包名)裏,在對應的BundleId下勾選 Associated Domains,如下圖
在這裏插入圖片描述
保存設置,然後重新生成配置文件。

2、添加Universal Links

Xcode(11)裏面添加Associated Domains
按照圖中的步驟添加好Universal Links
在這裏插入圖片描述
注意點:在 Associated Domains裏面配置的Universal Links必須要以applinks:開頭,後面寫上域名,例如

applinks:www.apple.com

記住你這裏配置的域名,下面需要上傳apple-app-site-association配置文件到這個域名根目錄中。

3、配置apple-app-site-association

自己創建一個名叫 apple-app-site-associationjson格式文件,注意文件命不需要添加.json後綴apple官方參照地址

{
    "applinks": {
        "apps": [],
        "details": [
        	{
            	"appID": "D3KQX62K1A.com.example.photoapp",
            	"paths": ["/albums"]
            },
            {
            	"appID": "D3KQX62K1A.com.example.videoapp",
            	"paths": ["/videos"]
        	},
        	{
            	"appID": "D3KQX62K1A.com.example.cameraapp",
            	"paths": ["*"]
        	},
        	{  
                "appID": "D3KQX62K1A.com.example.iphoneapp",
                "paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
        	}
        ]
    }
}

details: 以鍵值對的形式添加爲字典數組的JSON表示,每個應用程序一個字典。對於每個特定於應用程序的詞典(上面就表示了同一個teamid下的4個不同的應用)
appID: 格式爲TeamIdentifier.bundle identifier(開發者賬號teamID.appbundle identifier)。
paths: 應用程序支持的網站,以路徑字符串數組形式指定。只有這些指定的路徑的鏈接,才能被app所處理, *符號寫法代表了可識別域名下所有鏈接。

例如,附加 *到特定的網址(例如/ videos/samples/2015/*)以videos/samples/2015/下的所有路徑。
使用 ?匹配任何單個字符,如/photography/*/samples/201?/mypage
使用獨立*網站來指定整個網站。
在路徑字符串的開頭NOT添加(包括T後面的空格)來標識不應處理的區域。
注意 paths路徑字符串區分大小寫。

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

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

上傳成功後,我們可以用蘋果提供的驗證網址來直接驗證apple-app-site-association設置是否生效。

注意事項 : iOS 9.2之前,不用跨域都可以跳轉,iOS 9.2之後,必須跨域才能進行跳轉到原生app上。
iOS只會在App第一次啓動時請求一次apple-app-site-association文件,服務器上該文件的更新不會讓iOS本地的文件同步更新。

5、工程中添加處理方法

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

- (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;
}

userActivityNSUserActivityTypeBrowsingWeb類型, 則意味着它是由Universal Links進來,也就是處理邏輯的時候。

6、在微信開放平臺臺配置Universal Links

微信開放平臺地址:https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN
在微信開放平臺登錄你的開發者賬號,進入你的應用配置

配置的地方如下圖所示
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章