2016-03-14 65 views
6

在我的應用程序中發送應用程序邀請時,我試圖找到一種向其添加元數據的方法,以便我可以在內部跟蹤誰發送了邀請以及它們的成功程度(Facebook僅顯示來自當對話框打開並且無法跟蹤特定的渠道時)。將元數據添加到Facebook應用程序邀請

我發送邀請碼爲:

private void openFacebookAppInvite() { 
     AppInviteContent content = new AppInviteContent.Builder() 
       .setApplinkUrl(FACEBOOK_APP_LINK_URL) 
       .setPreviewImageUrl(INVITE_PREVOEW_IMAGE_URL) 
       .build(); 
     // WANT TO ADD METADATA HERE 
     AppInviteDialog.show(this, content); 
} 

回答

4

也許這是不是您希望爲的答案,但我認爲這將有助於實現您的要求。

1部分:直接與AppInvite

發送數據,據我所知,這是不可能與一個AppInviteContent.Builder直接創建AppInvites發送自定義數據。我將在第3部分中解釋一個更復雜的可能性。但也許GameRequest是一個選項。 A GameRequestDialog可以用GameRequestContent對象初始化。類別GameRequestContent.Builder的方法setData「設置可用於跟蹤的可選數據」。

第2部分:跟蹤邀請

當然,你可以跟蹤一個用戶打開的AppInviteDialog(通過做一個簡單的請求到服務器)。可悲的是,無法跟蹤邀請哪些用戶或多少用戶。

但受邀請的用戶接受邀請後,安裝並運行移動應用程序(或者在畫布上給予您權限,如果您也有畫布應用程序),則可以通過執行獲取所有AppRequests(邀請) Graph API/me/apprequests的查詢。

也是可能的:

  1. 畫布應用程序:POST請求,邀請用戶打開畫布頁面後,包含參數request_ids你的服務器會得到。這是逗號分隔的列表app-request-ids,可用於圖形查詢。
  2. 移動應用:被邀請的用戶安裝並啓動以響應AppRequest應用後,您就可以得到的意圖或通過使用AppLinkData.fetchDeferredAppLinkDataappLinkData.getTargetUri().getQueryParameter("request_ids")app-request-ids。請參閱文檔中的部分"Supporting incoming links"。現在你可以創建一個圖形API請求。

第3部分:通過一個App-Link的

與AppInvite發送數據如2.2部分所示,受邀用戶打開應用程序後,你會得到一個targetUrltargetUrl在您用於AppInvite的AppLinkUrl下的AppLink中指定。使用"Dynamic App Link endpoint",可以將數據發送給被邀請者。 這裏的想法如何實現這一點:

  1. 您的服務器定義與URI模板POST:http://example.com/users/${USER}/invites/的端點。 $ {USER}是邀請發件人的用戶名。
  2. 在創建邀請對話框之前,客戶端從步驟1向端點發送POST請求,並將獲取UUID作爲響應,該響應引用計劃的邀請和用戶。
  3. 服務器定義第二個端點GET:http://example.com/users/${USER}/invites/${UUID}。對此端點的響應是一個帶有已定義AppLink的頁面,其中al:android:urlexample://users/${USER}/invites/${UUID} - 當然,佔位符$ {USER}和$ {UUID}將被替​​換爲步驟1和2中的正確值。
  4. 客戶端使用端點從步驟3(http://example.com/users/${USER}/invites/${UUID})作爲app-link-url創建AppInviteContent時。
  5. 受邀用戶接受邀請並打開應用程序。現在我們可以從targetUrl獲取UUID(請參閱步驟2.2/"Supporting incoming links")。
相關問題