为Facebook应用邀请添加元数据

6

在我的应用程序中发送应用邀请时,我正在尝试找到一种方法来添加元数据,以便可以在内部跟踪谁发送了邀请以及它们的成功情况(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);
}
1个回答

4

也许这不是你所希望的答案,但我认为它可以帮助实现你的要求。

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

据我所知,使用AppInvites创建的AppInviteContent.Builder不能直接发送自定义数据。我将在第三部分中解释更复杂的可能性。但也许GameRequest对你来说是一个选择。GameRequestDialog可以使用GameRequestContent对象进行初始化。类GameRequestContent.Builder的方法setData“设置可选数据,可用于跟踪”。

第二部分:邀请追踪

当然,您可以跟踪用户是否打开了AppInviteDialog(通过向您的服务器发出简单请求)。不幸的是,无法跟踪邀请了哪些用户或有多少用户接受了邀请。
但是,在被邀请的用户接受邀请、安装并运行移动应用程序(或在画布应用程序上向您授予权限)之后,您可以通过对/me/apprequests使用Graph API进行查询,获取所有AppRequests(邀请)。
还有其他可能:
  1. 画布应用:在被邀请的用户打开画布页面后,您的服务器将收到一个POST请求,其中包含一个参数request_ids。这是一个逗号分隔的app-request-ids列表,可用于图形查询。
  2. 移动应用:在被邀请的用户安装并启动应用程序以响应AppRequest后,您可以从意图或通过使用AppLinkData.fetchDeferredAppLinkDataappLinkData.getTargetUri().getQueryParameter("request_ids")获取app-request-ids。请参阅文档中的"支持传入链接"部分。现在,您可以创建一个图形API请求。

第三部分:通过应用链接发送AppInvite数据

如第2.2部分所示,当受邀用户打开应用程序后,您将获得一个targetUrl。此targetUrlAppLink中指定,该链接位于您用于AppInvite的AppLinkUrl下方。使用"Dynamic App Link endpoint",可以向被邀请者发送数据。以下是一种实现方法:
  1. 您的服务器使用uri-template POST:http://example.com/users/${USER}/invites/ 定义了一个端点。${USER} 是邀请发送者的用户名。
  2. 在创建邀请对话框之前,客户端向步骤1中的端点发送POST请求,并获得一个UUID作为响应,该UUID引用了计划中的邀请和用户。
  3. 服务器定义了第二个端点GET:http://example.com/users/${USER}/invites/${UUID}。此端点的响应是一个带有定义的AppLink的页面,其中al:android:urlexample://users/${USER}/invites/${UUID} - 当然,占位符${USER}和${UUID}将替换为步骤1和2中的正确值。
  4. 客户端在创建AppInviteContent时,使用步骤3中的端点(http://example.com/users/${USER}/invites/${UUID}) 作为app-link-url。
  5. 被邀请的用户接受邀请并打开应用程序。现在我们能够从targetUrl(参见步骤2.2/"Supporting incoming links")中获取UUID。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接