一邻梆、簡介
通用鏈接的出現(xiàn)其實目的就是為了通過該鏈接可以鏈接到你的應(yīng)用內(nèi)容并安全地共享數(shù)據(jù)。針對于使用該項功能的好處蘋果爸爸也特別說明了绎秒,解釋如下圖浦妄。其實微信SDK1.8.6以后的版本之所以搞這么一出,說白了也是為了響應(yīng)蘋果爸爸的號召见芹。格式什么的官方文檔都有說明剂娄,感興趣的大家可以去。蘋果官方的解釋
二玄呛、微信官方集成文檔
三宜咒、自己采坑總結(jié)
其實理論來講看完微信官方文檔集成完事沒問題的,可是我按照文檔一路集成下來發(fā)現(xiàn)確實還是有不少坑點的把鉴。小哥我也是看了開放平臺之后才有了解決問題的思路沒想測試了成功了故黑。
溫馨提示:步驟就按照微信官方文檔去集成,我只是把坑點列出來庭砍,我想聰明的大家一定能解決了场晶。
坑點1:apple-app-site-association
文件怎么正確的處理呢?
(1)怠缸、雖然說這個文件是json文件,但是創(chuàng)建完后你一定要處理成如下圖诗轻,不帶.json
后綴的文件。
(2)揭北、apple-app-site-association
的內(nèi)容怎么定義的呢扳炬?
蘋果官方給的示例
<1>.我在這里使用的是微信官方給案例說明問題吏颖,不過大同小異根據(jù)自己的情況而定。
<2>.這里的appID為:團隊ID+項目的Bundle Identifier
(3)恨樟、獲取團隊ID半醉?
(4)、apple-app-site-association
應(yīng)該存放在哪里呢劝术?
<1>.蘋果爸爸說了需要存放于
你公司的服務(wù)器缩多。具體位置在服務(wù)器的根目錄或.well-known子目錄中。
.蘋果官方存放說明
<2>.溫馨提示:至于是放在服務(wù)器根目錄還是.well-known子目錄中需要根據(jù)公司使用的服務(wù)器決定养晋,像我們公司的服務(wù)器是沒有用到【.well-known】這個目錄的衬吆,所以最后放到了服務(wù)器的根目錄。`
坑點2:微信后臺的Universal Links 應(yīng)該怎么配置才正確呢绳泉?
<1>.以“https”開頭逊抡,以“/”結(jié)束。
<2>.舉個例子:例如app中使用的域名為:https://www.baidu.com/
然后我們在apple-app-site-association
文件的paths那一項配置的是/sdksample/*
,所以微信后臺Universal Links 那一項就應(yīng)該配置為https://www.baidu.com/sdksample/
零酪。如下圖:
坑點3:項目中應(yīng)該怎么配置Universal Links 呢冒嫡?
<1>.證書中需要添加一項新Associated Domains
的功能。如下圖:
<2>.xcode 中配置如下:
坑點4:xcode中其他的配置
坑點5:Universal Links配置好之后記得用蘋果官方的檢驗工具機型加測一下蛾娶。
坑點6: 針對微信分享的處理灯谣,應(yīng)該在AppDelegate中應(yīng)該有哪些方法中做處理潜秋?
<1>.步驟一
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//向微信注冊
[WXApi registerApp:APP_ID
universalLink:UNIVERSAL_LINK];
return YES;
}
<2>.步驟二
微信官方文檔中的第二步驟說需要在如下兩個方法中也需要做處理蛔琅,但是這兩個方法已經(jīng)被蘋果給廢棄了,統(tǒng)一在一個方法中做的處理峻呛。
廢棄的方法:
下邊的連個方法已經(jīng)廢棄罗售,這里只是為了說明白才把它寫在這里的,項目中是不需要這兩個方法的钩述。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [WXApi handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [WXApi handleOpenURL:url delegate:self];
}
兩個廢棄的方法統(tǒng)一為在這個方法中處理:
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
return [WXApi handleOpenURL:url delegate:self];
}
<1>.步驟三
這個是重點說明一下寨躁,因為我在這里采坑了。如果所有都配置好了之后掉起微信之后牙勘,在微信返回app的時候肯定會走這個方法的职恳。如果不走這個方法那么就會在微信SDK的log日志中看到一個錯誤
Error: fail to load keychain status:-25300,keyData null 1
并且在app中點擊分享的時候會重復(fù)調(diào)用正在連接
那個界面。這時候你就應(yīng)該去好好檢查一下你在apple-app-site-association
文件中配置的Universal Links
路徑是否與微信后臺配置的路徑一致方面,不一致就會出現(xiàn)這種情況放钦。
該方法必須要在分享操作的時候走這個方法,不走的話就會出現(xiàn)每次都會看見正在連接
這個界面恭金。
//通過universal link來喚起app
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}