我正在尝试通过ios应用上的URL方案与背景图像和贴纸图像共享故事,我正在使用附加的代码,但它不起作用。 当我尝试仅分享背景图片或贴纸时,它确实起作用。但是当我尝试同时在其顶部共享背景图像和标签时,它就不起作用了。
有什么想法吗?
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)
}
答案 0 :(得分:1)
一切都正确,我的代码相似,并且适用于iOS 11+。我建议您执行以下操作:
UIImagePNGRepresentation
,反之亦然LSApplicationQueriesSchemes
键)答案 1 :(得分:0)
我复制粘贴的OP代码以在自己的应用中使用(仅替换不同的UIImage),发现只有1个问题,粘贴板项目应包含在单个数组中,否则instagram仅呈现第一个项目(在这种情况下,背景层)。要解决此问题,请使用以下代码替换剪贴板项目的声明
let pasteBoardItems = [
["com.instagram.sharedSticker.backgroundImage" : backgroundData,
"com.instagram.sharedSticker.stickerImage" : stickerData]
]
(基本上只需移除将两个项目分开的关闭和打开括号)
还要像先前的回答所述,确保info.plist文件的LSApplicationQueriesSchemes中包含“ instagram故事”
我在我的应用中使用了此确切的代码,现在它可以完美运行