与Instagram分享故事背景图片和贴纸 - IOS Swift

问题描述 投票:2回答:2

我正在尝试通过我的ios应用程序上的URL Scheme分享带有背景图像的故事和贴纸图像,我正在使用附加的代码,它不起作用。当我试图分享一个背景图片或只是贴纸它确实有效。但是,当我尝试分享背景图像和顶部的贴纸时,它不起作用。

有任何想法吗?

func shareToInstagram(deepLinkString : String){
        let url = URL(string: "instagram-stories://share")!
        if UIApplication.shared.canOpenURL(url){

            let backgroundData = UIImageJPEGRepresentation(UIImage(named: "shop_placeholder")!, 1.0)!
            let creditCardImage = UIImage(named: "share_instagram")!
            let stickerData = UIImagePNGRepresentation(creditCardImage)!
            let pasteBoardItems = [
                                    ["com.instagram.sharedSticker.backgroundImage" : backgroundData],
                                    ["com.instagram.sharedSticker.stickerImage" : stickerData],
                                  ]

            if #available(iOS 10.0, *) {

                UIPasteboard.general.setItems(pasteBoardItems, options: [.expirationDate: Date().addingTimeInterval(60 * 5)])
            } else {
                UIPasteboard.general.items = pasteBoardItems
            }
            UIApplication.shared.openURL(url)
        }
ios swift instagram share url-scheme
2个回答
1
投票

一切都是正确的,我的代码是相似的,它适用于iOS 11+。我建议你以下几点:

  1. 检查传递给粘贴板的图像数据(jpg无法使用UIImagePNGRepresentation转换,反之亦然)
  2. 检查info.plist。您应该在其中启用“instagram-stories”方案(LSApplicationQueriesSchemes密钥)

0
投票

我复制粘贴的OP的代码在我自己的应用程序中使用(仅替换不同的UIImages)并且只发现1个问题,粘贴板项目应该包含在单个数组中,否则instagram将仅渲染第一个项目(在这种情况下是背景层)。要解决此问题,请使用以下代码替换粘贴板项目的声明

let pasteBoardItems = [
                ["com.instagram.sharedSticker.backgroundImage" : backgroundData,
                "com.instagram.sharedSticker.stickerImage" : stickerData]
            ]

(基本上只需删除分开两个项目的关闭和打开括号)

同样如前所述,请确保info.plist文件中的LSApplicationQueriesSchemes中包含“instagram-stories”

我在我的应用程序中使用这个确切的代码,现在它完美无缺

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