AppInviteDialog не работает в Android Facebook SDK 4.0

После долгих исследований и попыток исправить это самостоятельно, я не нашел приемлемого рабочего результата.

Следуя этой документации, я пытаюсь пригласить друзей в свое приложение. Все элементы, такие как кнопки «Поделиться», работают правильно.

Единственная проблема связана с диалоговым окном «Пригласить в приложение». После выбора друга в диалоговом окне отображается красный значок предупреждения, а кнопка «Отправить» превращается в кнопку «Повторить попытку».

Я пытался исправить это разными способами: настройте свое приложение на странице разработки FB (например, смените категорию приложения : игра, путешествия .и т.д.), добавляя новое разрешение на раздачу (но я не нашел, что для этого требуется приглашение), используя GamesRequests (но мое приложение не игра, это приложение для Android + Canvas). Итак, я снова вернулся к 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());
    }
});

И вызывая его, как в руководстве:

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

Но все, что я получаю, это:

введите здесь описание изображения

Редактировать:

После создания ссылки на мое приложение с помощью AppLinks и использования ее в AppInviteDialog, теперь все работает нормально. Немного смущает, что в документации не ясно описано, что за ссылка нужно использовать: «ссылка на AppLinks» или просто «ссылка на приложение (ссылка на ваше приложение fb)».


person VadymVL    schedule 01.04.2015    source источник
comment
Привет, Вадим, у тебя заработал обратный вызов? Я ничего не получаю обратно после того, как приглашаю людей.   -  person Karim Varela    schedule 10.04.2015
comment
@KarimVarela, если вы злитесь FacebookCallback<Result> из моего фрагмента кода, да, это работает - я могу показать сообщение об успехе или обработать ошибку.   -  person VadymVL    schedule 10.04.2015
comment
Вы знаете, как получить идентификатор выбранного друга? Насколько я знаю, в этой версии убрана возможность их получения.   -  person Proverbio    schedule 15.04.2015
comment
@Proverbio, нет, не знаю.   -  person VadymVL    schedule 15.04.2015


Ответы (2)


Есть ли сообщение об ошибке?

Я получаю это, если я не использую AppLink.

https://developers.facebook.com/quickstarts/1374389166202673/?platform=app-links-host

person ejw    schedule 01.04.2015
comment
Нет никаких ошибок. Я пытался получить какие-либо сообщения, так что хотя бы узнайте, что происходит и почему появляется красный предупреждающий знак. Но ни из лога, ни из слушателя сообщений об ошибках нет. Я не использую AppLinks. И даже не трогал его настройки вообще. - person VadymVL; 02.04.2015
comment
На самом деле мне не нужен функционал AppLink. Мне просто нужно отправить пользователю приглашение в мое приложение вот так. Единственный способ, который я нашел в документации SDK 4.0, — это AppInviteDialog. Но спасибо за ответ, попробую завтра поискать таким образом. - person VadymVL; 02.04.2015
comment
Большое спасибо, вы послали меня в правильном направлении! Немного сбивает с толку то, что в документации четко не описано, какую ссылку нужно использовать: ссылку AppLinks или просто ссылку на приложение (ссылку на ваше приложение fb). Это просто создает неправильное понимание и путаницу для разработчиков. Я настроил свой URL-адрес AppLink по вашей ссылке, которая просто перенаправляет на мою страницу приложения FB, и добавил его в AppInviteDialog. Теперь все работает нормально. - person VadymVL; 02.04.2015
comment
Согласен, меня тоже однажды днем ​​это очень расстроило. Рад, что это помогло. - person ejw; 17.04.2015

У меня была такая же проблема, и моя причина заключалась не в том, чтобы звонить onActivityResult в CallbackManager facebook. Вот как я это исправил:

@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);
person voghDev    schedule 06.03.2017