Xamarin Forms iOS 无法分享 Instagram 照片

Xamarin Forms iOS Share Instagram Photo doesn't work

我无法将图片分享到 Instagram,我不知道为什么。

我正在使用 Xamarin Forms,我正在尝试将图像共享到 Instagram,使用 DependencyService 允许调用 Project.iOS

中的函数

我正在 ios 模拟器上测试应用程序

首先,我尝试从 Uri 获取 UIImage:

uri = https://oc.ocstatic.com/images/favicon/android-chrome-512x512.png

public static UIImage FromUrl(string uri)
                    {
                        var imageName = uri.Substring(uri.LastIndexOf('/') + 1);

                        if (File.Exists(Path.Combine(NativeImagesPath, imageName)))
                            return UIImage.FromFile(Path.Combine(NativeImagesPath, imageName));

                        if (File.Exists(Path.Combine(ImagesCachePath, imageName)))
                            return UIImage.FromFile(Path.Combine(ImagesCachePath, imageName));

                        if (Items.ContainsKey(uri))
                            return Items[uri];

                        using (var url = new NSUrl(uri))
                        using (var data = NSData.FromUrl(url))
                        {
                            var image = UIImage.LoadFromData(data);

                            if (!NSFileManager.DefaultManager.FileExists(ImagesCachePath))
                                NSFileManager.DefaultManager.CreateDirectory(ImagesCachePath, false, null);

                            var result = NSFileManager.DefaultManager.CreateFile(Path.Combine(ImagesCachePath, imageName), data, new NSFileAttributes());
                            if (!result)
                                Items[uri] = image;

                            return image;
                        }
                    }

然后,我想使用以下代码将此 UIImage 分享到 Instagram:


var imageURL = FromUrl(path);
NSString documentDirectory = (new NSString(Environment.GetFolderPath(Environment.SpecialFolder.Personal)));
                string saveImagePath = documentDirectory.AppendPathComponent(new NSString(@"Image.ig"));
NSData imageData = imageURL.AsPNG();
imageData.Save(saveImagePath, true);
NSUrl imageURLfinal = NSUrl.FromFilename(saveImagePath);

if (UIApplication.SharedApplication.OpenUrl(instagramURL)) {

UIDocumentInteractionController DocumentController = new UIDocumentInteractionController();
DocumentController.Delegate = new UIDocumentInteractionControllerDelegateClass(this);
DocumentController.Url = imageURLfinal;
DocumentController.Uti = "com.instagram.photo";

DocumentController.PresentOpenInMenu(new RectangleF(1, 1, 1, 1), this.View, true);

  returnMessage = "NSURL: " + path;
}
else
{
  returnMessage = "Instagram Not Found";
}
````

I expect the Instagram screen.

我也在 Xamarin 论坛上提出了这个问题,我在这里 post 解决了这个问题。

https://forums.xamarin.com/discussion/comment/386163#Comment_386163