我正在研究如何实施Facebook邀请对话框,并注意到Facebook现在提供了一个新的FB App Invite产品。 有没有办法在Xamarin iOS中使用新的App Invite产品?
谢谢!
答案 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,结果可以“由用户取消”或完成
对于Android,在“由用户取消”时没有任何内容,但如果已完成:
<强>的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;
}
}