我正在尝试通过我的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 11+。我建议你以下几点:
UIImagePNGRepresentation
转换,反之亦然)LSApplicationQueriesSchemes
密钥)我复制粘贴的OP的代码在我自己的应用程序中使用(仅替换不同的UIImages)并且只发现1个问题,粘贴板项目应该包含在单个数组中,否则instagram将仅渲染第一个项目(在这种情况下是背景层)。要解决此问题,请使用以下代码替换粘贴板项目的声明
let pasteBoardItems = [
["com.instagram.sharedSticker.backgroundImage" : backgroundData,
"com.instagram.sharedSticker.stickerImage" : stickerData]
]
(基本上只需删除分开两个项目的关闭和打开括号)
同样如前所述,请确保info.plist文件中的LSApplicationQueriesSchemes中包含“instagram-stories”
我在我的应用程序中使用这个确切的代码,现在它完美无缺