Universal Links通用鏈接

吸睛圖

Universal Links


做App開發(fā)經常需要將某個頁面分享到微信或者其他社交平臺,也經常會有這么一個需求:如果安裝了app就從app打開,并跳轉到相應的產品頁,如果沒有安裝app,就跳出h5頁面。一般從瀏覽器、Safari中喚醒APP都是使用scheme,但是微信比較霸氣,直接禁用了scheme。因此只能使用別的方式。

Unibersal Links就是為此而生。它是IOS9推出的一項功能,可以通過http鏈接來啟動喚醒自己的APP。因為是IOS9(及以后)的系統(tǒng)服務,因此微信等社交平臺也沒有辦法阻止。

官方文檔地址:文檔

example


好不好用先看看別人的app。
1、下載app

2、app-site-association file

3、example Universal Link

4、自己寫個網頁,加個a標簽,href = http://www.opentable.com/restaurant/profile/33160?shareReferrer=ios-share ,然后在微信中打開你的網頁,點擊a標簽就跳轉到別人的app中去。

配置Universal Links(客戶端)


  • 首先,你的服務器必須支持https,并且你必須有一個域名。

因為我使用的是騰訊旗下的域名解析,因此我從騰訊云申請ssl證書,免費ssl證書申請地址,申請速度很快10分鐘就審批下來。

  • 需要在開發(fā)者中心的AppID中開啟Universal Links。
開啟Universal Links

然后重新配置下載描述文件(這步應該都會,這里只截圖開發(fā)的描述文件,發(fā)布版的也一樣要配置)

你的配置文件該不會都是xCode自動生成配置的吧

然后下載下來雙擊,使其在xCode生效。

  • 在你的應用中配置Associated Domains,并且用applinks:為前綴。
配置Associated Domains

順便我們也來看看剛才下載的描述文件有沒有配置好。

查看下描述文件
  • 創(chuàng)建一個名字為apple-app-site-association的文件,并放在服務器網絡的根目錄下。注意,這個文件沒有后綴!而且名字也不能改。
    比如:

    {
    "applinks": {
    "apps": [],
    "details": [
    {
    "appID": "GQUVXPG592.com.nuomi.test",
    "paths": ["/hello/","/","/"]
    }
    ]
    }
    }

其中GQUVXPG592是teamId,可以在你的開發(fā)者中心查看到,com.nuomi.test是你AppID。paths就是URL路徑支持通配符。具體怎么寫,還是查看文檔吧。

apple-app-site-association
  • 上傳apple-app-site-association文件到根補錄。

怎么才是判斷位置是否對呢?訪問https://你的域名/apple-app-site-association,如果能看見json或者下載到文件apple-app-site-association,那么就是放對了。

  • 在appDelegate中編寫代碼

如果上面都配置對了,那么在點擊對應的鏈接就會響應application:continueUserActivity:restorationHandler:方法,然后在這個方法里面根據(jù)傳進來的參數(shù)和路徑跳轉到不同的界面。

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
        if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]){
    
        NSURL *url = userActivity.webpageURL;
        NSString * msg = url.absoluteString;
    
        UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"Universal Links測試" message:[NSString stringWithFormat:@"url:%@",msg] delegate:self cancelButtonTitle:@"ok" otherButtonTitles: nil];
        [alert show];
    }
    
    return YES;
}

服務器配置https


還是老規(guī)矩,服務器端的內容因為不是重點,因此只會簡單得點一下。畢竟在配置服務器方面我也是摸爬滾打配出來的,網上資料很多,可以自行參考。

我的服務器采用apache,因此就用apache為例子。

  • 首先,準備好證書。
    我的證書是在騰訊云下載到的,如圖(ca文件,公鑰證書,私鑰):
證書文件
apache證書

我稍微改了下名字(順序不變):

改名證書
  • 找到你的apache在服務器中的位置,并找到httpd.conf文件。

我的httpd.conf在"apache/httpd-2.2.24/conf"下。

找到Include conf/extra/httpd-ssl.conf并把前面的#去掉。如果沒有在最后一行自己加。

  • 修改httpd-ssl.conf文件。

我的httpd-ssl.conf文件在"apache/httpd-2.2.24/conf/extra"下,如果沒有有可能你的apache不支持ssl,具體的可以網上尋找解決方案。

找到<VirtualHost _default_:443>或者差不多的標簽,找到SSLCipherSuite xxxxx修改為SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4,找到SSLProtocol xxxxx修改為SSLProtocol TLSv1 TLSv1.1 TLSv1.2使其支持TLSv1.2。

然后把我們剛才的證書傳到服務器上,并在httpd-ssl.conf修改證書文件路徑到對應文件下,比如:

SSLCertificateFile "/www/wdlinux/httpd-2.2.24/conf/server.crt"

SSLCertificateKeyFile "/www/wdlinux/httpd-2.2.24/conf/server.key"

SSLCertificateChainFile "/www/wdlinux/httpd-2.2.24/conf/server-ca.crt"

最后ssh到你的服務器,然后service httpd restart

ps:httpd-ssl.conf中 DocumentRoot "xxxxxxxx"就是你網站的根目錄。

現(xiàn)在可以通過瀏覽器用https訪問了,如果訪問成功,那么恭喜你適配成功了,如果不成功。。。再找教程吧。

配置成功

檢驗


Universal Links通用鏈接其實到目前為止就已經全部實現(xiàn)了,除了服務器配置不熟外,其他的還是很簡單的。下面只要測試下是否能在微信中打開。
比如我的apple-app-site-association文件掛在cs.pzhss.cc域名下,那么只要在rt.pzhss.cc(可以用http,不用https)的頁面中隨便加個a鏈接<a >測試</a>然后在微信的瀏覽器中打開,點擊a鏈接就能跳轉到自己的app中來。

測試

或者在備忘錄中打鏈接,然后長按,彈出在”xxx中打開“就算配置成功了。

IMG_3569.PNG
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容