2

我在我的应用程序中实现了新的 Facebook Messenger 对话框以发送“邀请”:

builder = new FacebookDialog.MessageDialogBuilder(getActivity())
        .setLink("http://demo.fivestarday.se/tidningsklippet/index.html")
        .setName("Inbjudan till Tidningsklippet")
        .setCaption("Inbjudan till Tidningsklippet")
        .setDescription("Du har blivit inbjuden till tidningsklippet med inbjudningskod:")      
        .setFragment(this);

...

FacebookDialog dialog = builder.build();
                    dialog.present();

这按预期工作,并显示 Facebook Messenger 应用程序并允许用户发送消息。

但是,当我想在以下位置捕获回调时:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() {
            @Override
            public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) {
                Log.e("Activity", String.format("Error: %s", error.toString()));
            }

            @Override
            public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) {
                Log.i("Activity", "Success!");
            }
        });

onErroronComplete 没有被调用,我不知道用户是取消了请求还是发送了它。onActivityResult然而被称为。

在我的早些时候,我Fragment注册了一个UiLifeCycleHelper

uiHelper = new UiLifecycleHelper(getActivity(), null);
uiHelper.onCreate(savedInstanceState);

有没有人通过 Messenger 对话框为 Android 完成了这项任务?或者这是另一个 Facebook 错误?

更新

在向 Facebook 报告此问题后,我得到了与下面的 atablash 相同的答案。但是,除非用户已验证您的应用程序(登录),否则在使用 Messenger 对话框时您将无法获得完成手势。在我的应用程序中,用户不会这样做,因为 Messenger 对话框不需要这样做。因此,基本上,如果您想使用 Messenger 对话框并获得回调,则必须先强制​​用户滞后。

4

1 回答 1

2

uiHelper.trackPendingDialogCall( dialog.present() )显示对话框时需要调用。

请参阅此处: https ://developers.facebook.com/docs/android/share/ (使用共享对话框共享链接,第 2 步)

于 2014-07-03T21:34:54.757 回答