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!");
            }
        });

onErrorまたは onComplete が呼び出されず、ユーザーがリクエストをキャンセルしたのか送信したのかわかりません。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 に答える