首页 > 解决方案 > 使用背景图片和贴纸向 Instagram 分享故事 - IOS Swift

问题描述

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

有任何想法吗?

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)
        }

标签: iosswiftinstagramshareurl-scheme

解决方案


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

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

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

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

我在我的应用程序中使用了这个确切的代码,它现在可以完美运行


推荐阅读