2016-03-08 56 views
0

我正嘗試使用fb分享按鈕從我的應用程序創建帖子到Facebook。我希望這篇文章能夠使用applink鏈接迴應用程序。我不明白如何將數據添加到Facebook網址,以便它知道在點擊鏈接時將應用引導到哪裏。如何使用ios中的Facebook分享按鈕進行深層鏈接的應用程序鏈接?

FBSDKShareLinkContent * content = [[FBSDKShareLinkContent alloc] init]; 
content.contentURL = [NSURL URLWithString:@"https://fb.me/123456789"]; 
FBSDKShareButton * button = [[FBSDKShareButton alloc] init]; 
button.shareContent = content; 
[self.view addSubview:button]; 

這可以工作,但任何查詢我嘗試添加到fb網址中斷並不再鏈接到應用程序。例如:

content.contentURL = [NSURL URLWithString:@"https://fb.me/123456789?my_view=news"]; 

這是他錯了嗎?我也嘗試過使用json編碼和al_applink_data,但對原始網址的任何更改都會使鏈接發送到圖像url,而不是應用程序鏈接。

回答

1

你實際上是利用兩種不同的Facebook工具,這種流動:

  1. 的FBSDK內你的應用程序共享一個鏈接(?看起來你可能已經從here得到了你的代碼示例)
  2. Facebook應用程序鏈接在鏈接打開時啓動您的應用程序。

Facebook用於應用程序鏈接的過程實際上有點複雜......不幸的是,它不像添加URL參數那麼簡單。這裏是(source)它是如何工作的概述:

  1. 您發佈鏈接到您的內容(您使用的FBSDK此)
  2. 的聯繫點,承載一些特殊的應用程序頁面鏈接元標籤。其中一個看起來像<meta property="al:ios:url" content="yourapp://path/to/content" />當Facebook抓取鏈接並看到這些標籤時,它會將鏈接標記爲啓用App Links。如果你沒有網站,你可以將這些標籤添加到你自己的網站,如果你有一個鏈接指向它,或者Facebook提供Mobile Hosting API(看起來你正在使用)。
  3. 當用戶打開此鏈接時,您的應用將啓動,並且您將通過一個像這樣的網址,,您的應用必須自行處理:yourapp://path/to/content?al_applink_data=JSON_ENCODED_DATA。不幸的是,重定向到應用程序中的正確位置並不神奇,並且假設您已經設置了應用程序以基於URL方案結構顯示內容。 Facebook的offers a walkthrough,但基本上你需要像這樣添加到您的AppDelegate.m:

    - (BOOL)application:(UIApplication *)application 
          openURL:(NSURL *)url 
        sourceApplication:(NSString *)sourceApplication 
         annotation:(id)annotation { 
        BFURL *parsedUrl = [BFURL URLWithInboundURL:url sourceApplication:sourceApplication]; 
        if ([parsedUrl appLinkData]) { 
         // this is an applink url, handle it here 
         NSURL *targetUrl = [parsedUrl targetURL]; 
         [[[UIAlertView alloc] initWithTitle:@"Received link:" 
                message:[targetUrl absoluteString] 
                delegate:nil 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil] show]; 
        } 
        ... 
    } 
    

這僅涉及您通過Facebook分享,雖然,並沒有進入那就是URL方案的爛攤子深度鏈接或Apple iOS 9中的新Universal Links。如果您想要處理所有這些,除了Facebook應用鏈接,您可以考慮免費服務,如Branch.io(完全披露:它們非常棒,我與他們合作)以照顧你的所有技術細節。

+0

這是非常有用的 - 謝謝。 branch.io看起來不錯,我可以使用我的演示版本後。我猜那部分對我而言仍然不清楚,我如何在應用程序鏈接中嵌入來自我的應用程序的動態信息。如果我的應用程序有餐廳配置文件,並且用戶共享一個fb,我希望該鏈接啓動該應用程序並加載該餐廳配置文件。解析json並使用數據不成問題,但我需要json來包含特定的餐廳。我仍然沒有看到如何添加一些如何在共享鏈接啓動應用程序時獲取信息。那有意義嗎? – rEquation

+0

啊......我稍微編輯了我的答案,以澄清這是如何工作的。使用Facebook,深層鏈接「目的地」實際上不在JSON數據內部 - 它就是網址本身。分支處理事情類似,但URL方案不再需要。您可以查看此頁面以獲得更直觀的概述:https://branch.io/how-branch-links-work/ –

+0

我登陸此處尋找類似問題的幫助。我已經設置了Facebook的「分享」按鈕,並且我想爲shareContent添加一個branch.io深層鏈接。我怎樣才能做到這一點? – mrwheet

相關問題