在我的应用程序中发送应用程序邀请时,我正在尝试找到一种向其添加元数据的方法,以便我可以在内部跟踪发送邀请的人以及他们的成功程度(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)
也许这不是您所希望的答案,但我认为这将有助于实现您的要求。
第 1 部分:直接使用 AppInvite 发送数据
据我所知,无法使用直接创建的AppInvitesAppInviteContent.Builder发送自定义数据。我将在第 3 部分中解释更复杂的可能性。但也许GameRequest是您的一个选择。AGameRequestDialog可以用对象来初始化GameRequestContent。setData该类的 方法GameRequestContent.Builder“设置可用于跟踪的可选数据”。
第 2 部分:跟踪邀请
当然,您可以跟踪用户打开了AppInviteDialog(通过向您的服务器发出简单的请求)。遗憾的是,无法跟踪邀请了哪些用户或有多少用户。
但是,在受邀用户接受邀请、安装并运行移动应用程序(或者向您授予画布上的权限,如果您也有画布应用程序)后,您可以通过查询来获取所有(邀请AppRequests)图形 API。/me/apprequests
也可能:
POST受邀请的用户打开画布页面后,您的服务器将收到的请求,包含一个参数request_ids。这是一个以逗号分隔的app-request-ids列表,可在图形查询中使用。 AppLinkData.fetchDeferredAppLinkDataappLinkData.getTargetUri().getQueryParameter("request_ids")第 3 部分:通过 App-Link 使用 AppInvite 发送数据
targetUrl如第 2.2 部分所示,受邀请的用户打开应用程序后,您将收到。这targetUrl是在您用于 AppInvite 的AppLinkUrl下找到的AppLink中指定的。通过“动态应用程序链接端点”,可以将数据发送给被邀请者。这是如何实现这一点的想法:
POST:http://example.com/users/${USER}/invites/。${USER} 是邀请发送者的用户名。GET:http://example.com/users/${USER}/invites/${UUID}。对此端点的响应是一个具有定义的 AppLink 的页面,其中al:android:url占位example://users/${USER}/invites/${UUID}符 ${USER} 和 ${UUID} 被替换为步骤 1 和 2 中的正确值。 http://example.com/users/${USER}/invites/${UUID}) 中的端点作为 app-link-url。