2015-12-17 4 views
1

мне удалось интегрировать Facebook (Xamarin.Facebook.iOS) к моей игре с пользовательским классом (ShareDialog защищала конструктор):Facebook Share Диалог не закрывается после успеха/отменить

public class MyShareDialog : Facebook.ShareKit.ShareDialog 
    { 
     public MyShareDialog() : base(NSObjectFlag.Empty) 
     { 
     } 
    } 

Затем я создаю и показать диалог :

string url = "http://my-url.com/class-to-generate-picture.php?score=" + Board.Score + "&textUp=" + 
System.Web.HttpUtility.UrlEncode("facebook_I_Scored".Localize()); 

       var myShareDialog = new MyShareDialog(); 


       var content = new Facebook.ShareKit.ShareLinkContent { 
        ContentDescription = "facebook_URLTitle".Localize(), 
        ContentTitle = "facebook_URLDescription1".Localize() + " " + 
         Board.Score + " " + "facebook_URLDescription2".Localize(), 
        ImageURL = new NSUrl(url)}; 
       content.SetContentUrl(new NSUrl("http://my-url.com")); 

       myShareDialog.SetShareContent(content); 
       myShareDialog.SetDelegate(new MyShareDelegate()); 

       myShareDialog.Show(); 

Localize() мой метод расширения, чтобы получить локализованные строки (я использую этот код для Windows, и Android, и это расширение дает мне комфорт общего кода :)). Board.Score - это статический int, содержащий - да - оценка.

MyShareDelegate:

public class MyShareDelegate : Facebook.ShareKit.ISharingDelegate 
{ 
public IntPtr Handle { get; } 

    public void DidComplete (Facebook.ShareKit.ISharing sharer, NSDictionary results) 
    { 
    } 

    public void DidFail (Facebook.ShareKit.ISharing sharer, NSError error) 
    { 
    } 

    public void DidCancel (Facebook.ShareKit.ISharing sharer) 
    { 
    } 

    public void Dispose() 
    { 

    } 
} 

У меня есть 2 проблемы:

  1. DidComplete/DidFail/DidCancel не называют.

  2. Все работает отлично, доля публикуется на шкале НО после нажатия SHARE/ОТМЕНА диалог не закрывается ...

Что я делаю неправильно?

ответ

0

1) Постарайтесь изменить public void на public override void.

2) Вам нужно вручную вызвать dismissModalViewControllerAnimated после получения notication

+0

Процентовки не применяется здесь, я думаю, - это реализация интерфейса, а не derrived класса. И без работы «DidComplete» у меня нет места, чтобы поместить этот метод ... – WojGrze

+0

Я изменил MyShareDelegate на: Публичный класс MyShareDelegate: Facebook.ShareKit.SharingDelegate и переопределить эти методы, но все равно не повезло (я пытаюсь показать UIAlertView после отмены/завершения) ... – WojGrze

+0

Итак, после удаления 'yShareDialog.SetShareContent (content);' нет ничего, что могло бы с ним поделать, и DidFail вызывается. Но до сих пор нет успеха с DidComplete/DidCancel ... – WojGrze