无法在 iOS 中直接将图像分享到 Instagram

问题描述 投票:0回答:1

我想在我的 iOS 应用程序中启用一项功能,以直接在 Instagram 上分享图片。虽然传统的方式是展示 Apple 提供的分享表,但我更喜欢有一个 Instagram 按钮,让用户无需打开分享表即可轻松分享图像。我找到了两个可用于此目的的 URL:用于帖子的“instagram://share”和用于故事的“instagram-stories://share”。 但是,我看到其他应用程序显示带有三个默认选项的“分享到 Instagram”表,如图所示。我有兴趣在我的应用程序中实现此功能。

我的代码如下:

func shareOnInstagram(image: UIImage) {
    if let url = URL(string: "instagram://share") {
        if UIApplication.shared.canOpenURL(url) {
            guard let imageData = image.jpegData(compressionQuality: 1.0) else { return }
            let pasteboardItem : [String: Any] = ["com.instagram.sharedSticker.stickerImage": imageData]
            ]
            let pasteboardOptions = [
                UIPasteboard.OptionsKey.expirationDate : Date().addingTimeInterval(300)
            ]
            UIPasteboard.general.setItems([pasteboardItem], options: pasteboardOptions)
            UIApplication.shared.open(url, options: [:], completionHandler: nil)
        }
        else {
            print("User doesn't have IG on their device.")
        }
    }
}

一直在想办法整合这个sheet,很遗憾,还没有成功。因此,我正在寻求有关如何将此表集成到我的应用程序中以允许直接分享到 Instagram 的指导。

swift swiftui instagram ios-sharesheet
1个回答
0
投票

要在不显示共享表的情况下将图像自定义共享到 Instagram,您可以在代码中使用 Instagram URL 方案。以下是实现此目的的步骤:

  1. 首先,您需要检查设备上是否安装了 Instagram 应用程序。您可以使用 UIApplication 类的 canOpenURL 方法执行此操作。
guard let instagramURL = URL(string: "instagram://app") else { return }
if UIApplication.shared.canOpenURL(instagramURL) {
   // Instagram app is installed on the device
} else {
   // Instagram app is not installed on the device
}
  1. 如果安装了 Instagram 应用程序,您可以使用 instagram://share URL 方案创建一个包含要共享的图像的 URL。
let instagramShareURL = URL(string: "instagram://share?media=yourImageURL")

将“yourImageURL”替换为您要在 Instagram 上分享的图片的 URL。

  1. 获得 Instagram 分享 URL 后,您可以使用 UIApplication 类的打开方法打开它。
UIApplication.shared.open(instagramShareURL, options: [:], completionHandler: nil)

这将打开 Instagram 应用程序并允许用户直接共享图像而无需出示共享表。

注意:Instagram 的 URL 方案和 API 如有更改,恕不另行通知,因此最好查看 Instagram 开发人员文档以获取最新信息。

© www.soinside.com 2019 - 2024. All rights reserved.