在Android Facebook SDK 4.0中,AppInviteDialog无法正常工作。

5

经过长时间的研究和自己尝试修复,我没有找到任何可接受的工作结果。

遵循此文档,我正在尝试邀请朋友加入我的应用程序。所有元素,如共享按钮都可以正常工作。

唯一的问题是“邀请到应用程序”的对话框。选择好友后,对话框会显示红色警报图标,并且“发送”按钮变为“重试”按钮。

我已经尝试了多种方法来解决这个问题 - 在FB开发页面中配置我的应用程序(例如更改应用程序类别:游戏、旅行等),添加新的共享权限(但我没有发现需要邀请),使用GamesRequests(但我的应用程序不是游戏,而是Android +画布应用程序)。因此,我又回到了AppInviteDialog。

此外,我还尝试使用具有侦听器的自己的实例,而不是静态类。

inviteDialog = new AppInviteDialog(this);
inviteDialog.registerCallback(callbackManager, new FacebookCallback<Result>() {
    @Override
    public void onSuccess(Result result) {
        Log.i(TAG, "MainACtivity, InviteCallback - SUCCESS!");
    }

    @Override
    public void onCancel() {
        Log.i(TAG, "MainACtivity, InviteCallback - CANCEL!");
    }

    @Override
    public void onError(FacebookException error) {
        Log.e(TAG, "MainACtivity, InviteCallback - ERROR! " + error.getMessage());
    }
});

并像这样调用它,如 tutorial

 if(AppInviteDialog.canShow()) {
        AppInviteContent content = new AppInviteContent.Builder()
            .setApplinkUrl(appUrl)
            .setPreviewImageUrl(imagePreviewUrl)
            .build();
            //AppInviteDialog.show(this, content); //static
        inviteDialog.show(content); //my instance
  }

但是我得到的全部都是:

enter image description here

编辑:

在使用AppLinks创建应用链接并在AppInviteDialog中使用后,现在一切都正常了。 有点令人困惑的是,在文档中没有清楚地描述需要使用哪种链接:“AppLinks链接”还是“应用链接(指向您的FB应用程序的链接)”。


嗨,Vadym,你让回调函数正常工作了吗?我邀请人后没有收到任何反馈。 - Karim Varela
@KarimVarela 如果你指的是我代码片段中的 FacebookCallback<Result>,是的,它可以工作 - 我可以显示成功消息或处理错误。 - VadymVL
你知道如何获取所选好友的ID吗?据我所知,这个版本已经删除了获取它们的功能。 - Juampa
@Proverbio,不,我不这样做。 - VadymVL
2个回答

2

没有任何错误。我已经尝试获取任何消息,至少找出正在发生什么以及为什么会出现红色警报标志。但是既不来自日志,也不来自监听器,没有错误消息。我没有使用AppLinks。甚至根本没有触及它的设置。 - VadymVL
实际上,我不需要AppLink功能。我只需要向用户发送邀请加入我的应用程序类似于这样。我从SDK 4.0文档中找到的唯一方法是使用AppInviteDialog。但是感谢您的回答,我明天会尝试按照这种方式搜索。 - VadymVL
2
非常感谢,你已经指引我正确的方向!文档中没有清楚地描述需要使用什么类型的链接:“AppLinks link”还是只是“应用链接(链接到您的FB应用程序)”,这会导致开发人员产生误解和混淆。我已经通过你提供的链接配置了我的AppLink URL,它只是重定向到我的FB应用程序页面,并将其添加到AppInviteDialog中。现在一切都正常工作。 - VadymVL
我同意,那个下午对我来说也非常令人沮丧。很高兴它有所帮助。 - ejw

0

我遇到了同样的问题,原因是没有在Facebook CallbackManager上调用onActivityResult。这是我解决它的方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    facebookCallbackManager = CallbackManager.Factory.create();
    // ...
}

这就是我遇到错误的地方:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // This is the line I was lacking
    facebookCallbackManager.onActivityResult(requestCode, resultCode, data);
}

在添加了onActivityResult之后,我的回调函数得到了触发:

AppInviteDialog appInviteDialog = new AppInviteDialog(activity);
FacebookCallback callback =  new FacebookCallback<AppInviteDialog.Result>() {
        @Override
        public void onSuccess(AppInviteDialog.Result result) {
        }

        @Override
        public void onCancel() {
        }

        @Override
        public void onError(FacebookException error) {
        }
    };
appInviteDialog.registerCallback(facebookCallbackManager, callback);
appInviteDialog.show(content);

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