【问题标题】:Xamarin Forms iOS Share Instagram Photo doesn't workXamarin Forms iOS Share Instagram Photo 不起作用
【发布时间】:2019-12-15 05:14:09
【问题描述】:

我无法将图片分享到 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.

【问题讨论】:

  • 你试过用“com.instagram.exlusivegram”这个Uti吗?
  • 是的,但什么都没有:(
  • 也许,可以在模拟器上运行???
  • 检查您是否已经在设备上安装了 Instagram 应用程序。否则打不开
  • 我只打开 Instagram,但我没有要发布的照片​​

标签: image xamarin.forms xamarin.ios share


【解决方案1】:

我也在 Xamarin 论坛上提出了这个问题,我刚刚在这里为我发布了问题的解决方案。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 2020-02-12
    相关资源
    最近更新 更多