将元数据添加到Facebook App邀请

the*_*osh 6 android 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);
}
Run Code Online (Sandbox Code Playgroud)

Mei*_*mow 4

也许这不是您所希望的答案,但我认为这将有助于实现您的要求。

第 1 部分:直接使用 AppInvite 发送数据

据我所知,无法使用直接创建的AppInvitesAppInviteContent.Builder发送自定义数据。我将在第 3 部分中解释更复杂的可能性。但也许GameRequest是您的一个选择。AGameRequestDialog可以用对象来初始化GameRequestContentsetData该类的 方法GameRequestContent.Builder“设置可用于跟踪的可选数据”。

第 2 部分:跟踪邀请

当然,您可以跟踪用户打开了AppInviteDialog(通过向您的服务器发出简单的请求)。遗憾的是,无法跟踪邀请了哪些用户或有多少用户。

但是,在受邀用户接受邀请、安装并运行移动应用程序(或者向您授予画布上的权限,如果您也有画布应用程序)后,您可以通过查询来获取所有(邀请AppRequests图形 API/me/apprequests

也可能:

  1. Canvas App:POST受邀请的用户打开画布页面后,您的服务器将收到的请求,包含一个参数request_ids这是一个以逗号分隔的app-request-ids列表,可在图形查询中使用。
  2. 移动应用程序:受邀用户安装并启动应用程序以响应 AppRequest 后,您可以从 Intent 或使用和获取应用程序请求 ID。请参阅文档中的“支持传入链接”部分。现在您可以创建图形 api 请求。AppLinkData.fetchDeferredAppLinkDataappLinkData.getTargetUri().getQueryParameter("request_ids")

第 3 部分:通过 App-Link 使用 AppInvite 发送数据

targetUrl如第 2.2 部分所示,受邀请的用户打开应用程序后,您将收到。这targetUrl是在您用于 AppInvite 的AppLinkUrl下找到的AppLink中指定的。通过“动态应用程序链接端点”,可以将数据发送给被邀请者。这是如何实现这一点的想法:

  1. 您的服务器使用 uri-template 定义端点POST:http://example.com/users/${USER}/invites/。${USER} 是邀请发送者的用户名。
  2. 在创建邀请对话框之前,客户端向步骤 1 中的端点发送 POST 请求,并将获得 UUID 作为响应,该响应引用了计划的邀请和用户。
  3. 服务器定义第二个端点GET:http://example.com/users/${USER}/invites/${UUID}。对此端点的响应是一个具有定义的 AppLink 的页面,其中al:android:url占位example://users/${USER}/invites/${UUID}符 ${USER} 和 ${UUID} 被替换为步骤 1 和 2 中的正确值。
  4. 创建 AppInviteContent 时,客户端使用步骤 3 ( http://example.com/users/${USER}/invites/${UUID}) 中的端点作为 app-link-url。
  5. 受邀用户接受邀请并打开应用程序。现在我们可以从 targetUrl 获取 UUID(请参阅步骤 2.2/ “支持传入链接”)。