2015-03-26 2 views

ответ

5

Вот РЕАЛИЗАЦИЯ из приложения приглашает

Вам нужно создать Native implementaion для appinvites

Просто создать один интерфейс под названием IFacebookService

Определить метод Defination, как показано в примере

public interface IFacebookservice{ 
    InviteFriends (string appLinkURL, string previewImageURL); 
} 

и делают, что реализация на стороне платформы, как показано ниже

IOSFacebookService.CS

public void InviteFriends (string appLinkURL, string previewImageURL) 
{ 
      var fromController = UIApplication.SharedApplication.KeyWindow.RootViewController; 
      var content = new AppInviteContent { 
       AppLinkURL = new NSUrl (appLinkURL), 
       PreviewImageURL = new NSUrl (previewImageURL) 
      }; 
      AppInviteDialog.Show (fromController, content, null); 
} 

AndroidFacebookService.Cs

public void InviteFriends(string appLinkURL, string previewImageURL) 
    { 
     if (AppInviteDialog.CanShow()) 
     { 
      var activity = Xamarin.Forms.Forms.Context as Activity; 
      var content =new AppInviteContent.Builder().SetApplinkUrl(appLinkURL).SetPreviewImageUrl(previewImageURL).Build() as AppInviteContent; 
      AppInviteDialog.Show(activity, content); 
     } 
    } 

Использование в Xamarin Forms

var facebookservice=Dependency.Get<IFacebookservice>() 
    button.click+=delegate{facebookservice.InviteFriends("appurl","previewimageurl")} 
+0

Я следовал выше implentation и его прекрасно работать с устройством чтения дроидов и IOS-Simulator. Но на реальном iPhone он не показывает диалог Пригласить. Никакой ошибки, никакого исключения, ничего. хоть хоть на это? – SoftSan

+0

Вы, ребята, это, чтобы показать собственный диалог или диалог в Интернете? Мы используем вышеупомянутую реализацию, но все еще получаем версию веб-браузера –

+0

@https: //stackoverflow.com/users/2086778/softsan Попробуйте реализовать обработчик ошибок из моего сообщения ниже –

2

В настоящее время он не поддерживается SDK Xamarin FB. Функция приглашения доступна с версии 4.0, где преобразованная версия FB SDK была выполнена в версии 3.6.

Таким образом, вы в основном есть два варианта:

1) Задать Xamarin Dev Team обновить FB SDK до версии 4.0, вы можете проверить его here

2) Так как это, вероятно, не будут готовы скоро вы можете взять FB iOS родной sdk и создать библиотеку xamarin самостоятельно. Более подробную информацию можно найти здесь link

Если вы решите пойти на вариант № 2, было бы здорово, если бы вы поделились своим преобразованным sdk.

1

Ответ от Jagadeesh полностью верен. Также рассмотрите возможность применения обработчика результата при возврате из многопользовательского селектора Facebook. Если бы был приглашен хотя бы один друг, обратная связь с API-интерфейсом Facebook покажет его.Для iOS результат может быть «отменен пользователем» или завершен

  • {completeGesture = cancel; didComplete = 1;}
  • {didComplete = 1;}

для Android ничего, когда 'отменена пользователем', но если завершено:

  • Bundle [{didComplete = 1}]

Android

 AppInviteDialog AppInv = new AppInviteDialog(activity); 
     AppInv.RegisterCallback(callbackManager, invitecallback); 
     AppInv.Show(content); 
     var invitecallback = new FacebookCallback<AppInviteDialog.Result>() 
     { 
      HandleSuccess = Result => 
      { 
       if ((string)Result.Data == "Bundle[{didComplete=1}]") 
       { 
        textbox.Text = "Friend Invited"; 
       } 
      }, 
      HandleCancel =() => 
      { 
       textbox.Text = "Cancelled"; 
      }, 
      HandleError = Error => 
      { 
       textbox.Text = "Error" + Error.Message; 
      } 
     }; 

Ios

var dlgt = new MyAppInviteDialogDelegate(); 
    var dialog = AppInviteDialog.Show(fromController, content, dlgt); 
    public class MyAppInviteDialogDelegate : AppInviteDialogDelegate 
    { 

     public override void DidComplete(AppInviteDialog appInviteDialog, NSDictionary results) 
     { 
      textbox.Text = "Friend Invited"; 
      if (results.Description.Contains("cancel")) 
      { 
       textbox.Text = "Cancelled"; 
      } 
     } 

     public override void DidFail(AppInviteDialog appInviteDialog, NSError error) 
     { 
      textbox.Text = "Error" + error.Description; 
     } 
    } 
Смежные вопросы