FB App邀请Xamarin

时间:2015-03-26 16:24:39

标签: ios facebook xamarin

我正在研究如何实施Facebook邀请对话框,并注意到Facebook现在提供了一个新的FB App Invite产品。 有没有办法在Xamarin iOS中使用新的App Invite产品?

谢谢!

3 个答案:

答案 0 :(得分:5)

以下是app invites的实现

  

您需要为appinvites创建Native实现

只需创建一个名为IFacebookService的接口

定义方法定义,如示例

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

并在平台端执行该实现,如下所示

IOS FacebookService.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);
}

Android FacebookService.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表单中的用法

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

答案 1 :(得分:2)

目前Xamarin FB SDK不支持它。邀请功能可从4.0版获得,其中FB SDK的转换版本在版本3.6上完成。

所以你基本上有两个选择:

1)请Xamarin开发团队将FB sdk更新到4.0版,你可以查看它here

2)由于它可能不会很快就绪,你可以使用FB iOS 原生 sdk,并自己生成一个xamarin库。 有关详细信息,请参阅此link

如果你决定选择#2​​选项,那么如果你愿意分享你的转换后的sdk会很棒。

答案 2 :(得分:1)

Jagadeesh的答案完全正确。还要考虑从Facebook多朋友选择器返回时实现结果处理程序。如果邀请了至少一位朋友,Facebook API反馈将显示它。对于iOS,结果可以“由用户取消”或完成

  • {completionGesture =取消; didComplete = 1;}
  • {didComplete = 1;}

对于Android,在“由用户取消”时没有任何内容,但如果已完成:

  • 捆绑[{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;
        }
    }