public void ShareTemplateRefreshed(ShareResponseModel shareResponse) { if (shareResponse != null && shareResponse.ShareTemplate != null) { ShareTemplate = shareResponse.ShareTemplate; } RemoveOverlay(); }
public async Task SendOpenGraph(object source, ChallengeModel model, string message = null, byte[] data = null, Action <ChallengesFacebookShareResponseType> viewModelResponse = null, ShareTemplateModel shareTemplate = null, ShareResponseModel shareResponse = null) { ViewModelResponse = viewModelResponse; ShareDialog dialog = new ShareDialog(source as Activity); dialog.RegisterCallback((source as MainActivity).CallBackManager, this); if (shareTemplate == null || shareResponse == null) { await SL.Manager.RefreshShareTemplate(model.ShareTemplateURL, (response) => { ShareTemplate = response?.ShareTemplate; shareResponse = response; }); } else { ShareTemplate = shareTemplate; } OpenGraphWasTry = true; var openGraphBuilder = new ShareOpenGraphObject.Builder(); openGraphBuilder.PutString("og:type", "object"); openGraphBuilder.PutString("og:title", string.IsNullOrEmpty(ShareTemplate?.PostTitle) ? ShareTemplate?.PostHref : ShareTemplate.PostTitle); openGraphBuilder.PutString("og:description", string.IsNullOrEmpty(message) ? ShareTemplate?.PostDescription ?? " " : message); //openGraphBuilder.PutString("og:url", ShareTemplate?.PostHref ?? model.ShareImage); if (model != null && (model.FBShareType == "image" || !string.IsNullOrEmpty(model.ShareImage))) { openGraphBuilder.PutString("og:image", model.ShareImage); } if (model != null && (model.FBShareType == "link" || model.FBShareType == null)) { openGraphBuilder.PutString("og:url", ShareTemplate?.PostHref ?? model.ShareImage); } ShareOpenGraphObject openGraph = openGraphBuilder.Build(); ShareOpenGraphAction action = new ShareOpenGraphAction.Builder() .SetActionType("news.publishes") .PutObject("object", openGraph) .JavaCast <ShareOpenGraphAction.Builder>() .Build(); ShareOpenGraphContent contentOpenGraph = new ShareOpenGraphContent.Builder() .SetPreviewPropertyName("object") .SetAction(action) .Build(); dialog.Show(contentOpenGraph, ShareDialog.Mode.Web); //ShareDialog.Show(source as Activity, contentOpenGraph); }
private void SendInviteMessage(ShareResponseModel model) { if (model?.ShareTemplate == null) { return; } _shareTemplateModel = model.ShareTemplate; var alertController = UIAlertController.Create("", "What kind of message?", UIAlertControllerStyle.ActionSheet); // Add Actions alertController.AddAction(UIAlertAction.Create("WhatsApp", UIAlertActionStyle.Default, SendInitationViaWatsApp)); alertController.AddAction(UIAlertAction.Create("SMS", UIAlertActionStyle.Default, SendInvitationViaSms)); alertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, alert => Console.WriteLine("Cancel sending message"))); // Show the alert NavigationController.PresentViewController(alertController, true, null); }
public async void SendOpenGraph(object source, ChallengeModel model, string message = null) { ShareTemplateModel shareTemplate = null; ShareResponseModel shareResponse = null; await SL.Manager.RefreshShareTemplate(model.ShareTemplateURL, (response) => { shareTemplate = response?.ShareTemplate; shareResponse = response; }); NSUrl url = new NSUrl(shareTemplate?.PostHref ?? model.ShareImage); if (string.IsNullOrEmpty(url?.AbsoluteString)) { new UIAlertView("Sharing Error", string.IsNullOrEmpty(shareResponse?.ResponseMessage) ? "Sorry. No url come from server" : shareResponse.ResponseMessage, source as IUIAlertViewDelegate, "Ok").Show(); return; } ShareDialog dialog = new ShareDialog(); dialog.SetShouldFailOnDataError(true); dialog.FromViewController = source as UIViewController; dialog.SetDelegate(source as ISharingDelegate ?? new FBSharingDelegate()); NSString[] keys; NSObject[] objects; string imgUrl = null; try { if (!string.IsNullOrEmpty(model.ShareImage)) { await ImageService.Instance.LoadUrl(model.ShareImage).IntoAsync(new UIImageView()); imgUrl = model.ShareImage; } } catch (Exception) { } if (string.IsNullOrEmpty(imgUrl)) { keys = new NSString[] { new NSString("og:type"), new NSString("og:url"), new NSString("og:title"), new NSString("og:description"), }; objects = new NSObject[] { NSObject.FromObject("article"), NSObject.FromObject(url), NSObject.FromObject(string.IsNullOrEmpty(shareTemplate?.PostTitle) ? url.AbsoluteString : shareTemplate.PostTitle), NSObject.FromObject(string.IsNullOrEmpty(message) ? shareTemplate?.PostDescription ?? " " : message), }; } else { keys = new NSString[] { new NSString("og:type"), new NSString("og:url"), new NSString("og:title"), new NSString("og:description"), new NSString("og:image"), }; objects = new NSObject[] { NSObject.FromObject("article"), NSObject.FromObject(url), NSObject.FromObject(string.IsNullOrEmpty(shareTemplate?.PostTitle) ? url.AbsoluteString : shareTemplate.PostTitle), NSObject.FromObject(string.IsNullOrEmpty(message) ? shareTemplate?.PostDescription ?? " " : message), NSObject.FromObject(imgUrl), }; } var propesties = new NSDictionary <NSString, NSObject>(keys, objects); var openGraph = ShareOpenGraphObject.ObjectWithProperties(propesties); var action = ShareOpenGraphAction.Action("news.publishes", openGraph, "article"); var contentOpenGraph = new ShareOpenGraphContent { Action = action, PreviewPropertyName = "article" }; dialog.SetShareContent(contentOpenGraph); dialog.Mode = ShareDialogMode.Web; dialog.Show(); if (dialog.Mode == ShareDialogMode.Web) { StylishFbWebDialog(); } }
public async void ShareFacebookChallenge(object source, ChallengeModel model, string message = null) { ShareTemplateModel shareTemplate = null; ShareResponseModel shareResponse = null; await SL.Manager.RefreshShareTemplate(model.ShareTemplateURL, (response) => { shareTemplate = response?.ShareTemplate; shareResponse = response; }); NSUrl url = new NSUrl(shareTemplate?.PostHref ?? model.ShareImage); ShareDialog dialog = new ShareDialog(); dialog.SetShouldFailOnDataError(true); dialog.FromViewController = source as UIViewController; dialog.SetDelegate(source as ISharingDelegate ?? new FBSharingDelegate()); if (string.IsNullOrEmpty(message) && model.FBShareType == "image") { UIImageView imageView = new UIImageView(); try { await ImageService.Instance.LoadUrl(model.ShareImage).IntoAsync(imageView); } catch (Exception) { try { await ImageService.Instance.LoadUrl(model.Image).IntoAsync(imageView); } catch (Exception) { } } dialog.SetShareContent(new SharePhotoContent() { Photos = new SharePhoto[] { SharePhoto.From(imageView.Image, true) } }); dialog.Mode = ShareDialogMode.Native; } else if (string.IsNullOrEmpty(message) && (model.FBShareType == "link" || model.FBShareType == null)) { ShareLinkContent contentLink = new ShareLinkContent(); if (string.IsNullOrEmpty(url?.AbsoluteString)) { new UIAlertView("Sharing Error", string.IsNullOrEmpty(shareResponse?.ResponseMessage) ? "Sorry. No url come from server" : shareResponse.ResponseMessage, source as IUIAlertViewDelegate, "Ok").Show(); return; } contentLink.SetContentUrl(url); dialog.SetShareContent(contentLink); dialog.Mode = ShareDialogMode.Web; } else { SendOpenGraph(source, model, message); return; } if (!dialog.CanShow()) { SendOpenGraph(source, model, message); return; } dialog.Show(); if (dialog.Mode == ShareDialogMode.Web) { StylishFbWebDialog(); } }
public Task SendOpenGraph(object source, ChallengeModel model, string message = null, byte[] data = null, Action <ChallengesFacebookShareResponseType> viewModelResponse = null, ShareTemplateModel shareTemplate = null, ShareResponseModel shareResponse = null) { throw new NotImplementedException(); }
public async Task ShareFacebookChallenge(object source, ChallengeModel model, string message = null, byte[] data = null, Action <ChallengesFacebookShareResponseType> viewModelResponse = null) { OpenGraphWasTry = false; ViewModelResponse = viewModelResponse; Activity = source as Activity; Model = model; ShareTemplateModel shareTemplate = null; ShareResponseModel shareResponse = null; await SL.Manager.RefreshShareTemplate(Model.ShareTemplateURL, (response) => { shareTemplate = response?.ShareTemplate; shareResponse = response; }); try { ShareDialog dialog = new ShareDialog(Activity); dialog.RegisterCallback((Activity as MainActivity).CallBackManager, this); if (string.IsNullOrEmpty(message) && Model.FBShareType == "image") { if (data == null && !string.IsNullOrEmpty(Model.Image)) { data = await ImageUrlToByteArrayLocalConverter.ReadImageUrlToBytesArray(Model.Image); } if (data == null) { return; } var bitmapImage = await BitmapFactory.DecodeByteArrayAsync(data, 0, data.Length); var photoBuilder = new SharePhoto.Builder(); photoBuilder.SetUserGenerated(true); var sharePhoto = photoBuilder.SetBitmap(bitmapImage); SharePhotoContent content = new SharePhotoContent.Builder().AddPhoto(sharePhoto.Build()).Build(); if (dialog.CanShow(content, ShareDialog.Mode.Web)) { dialog.Show(content, ShareDialog.Mode.Web); return; } } if (string.IsNullOrEmpty(message) && (Model.FBShareType == null || Model.FBShareType == "link")) { var uri = Android.Net.Uri.Parse(shareTemplate?.PostHref ?? Model.ShareImage); var linkBuilder = new ShareLinkContent.Builder(); linkBuilder.SetContentUrl(Android.Net.Uri.Parse(shareTemplate?.PostHref ?? Model.ShareImage)); ShareLinkContent content = linkBuilder.Build(); if (dialog.CanShow(content, ShareDialog.Mode.Web)) { dialog.Show(content, ShareDialog.Mode.Web); return; } } ViewModelResponse(ChallengesFacebookShareResponseType.NativeUninstallApp); } catch (System.Exception ex) { await SendOpenGraph(Activity, Model, message, null, null, shareTemplate, shareResponse); } return; }