簡體   English   中英

使用背景圖片和貼紙向 Instagram 分享故事 - IOS Swift

[英]Sharing a story to Instagram with a background image and a sticker - IOS Swift

我正在嘗試在我的 ios 應用程序上通過 URL 方案與背景圖像 aa 貼紙圖像分享一個故事,我正在使用附加的代碼,但它不起作用。 當我嘗試只分享背景圖片或貼紙時,它確實有效。 但是當我嘗試在其頂部共享背景圖像和貼紙時,它不起作用。

有任何想法嗎?

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

我復制粘貼的 OP 代碼以在我自己的應用程序中使用(僅替換不同的 UIImages)並發現只有一個問題,粘貼板項目應包含在單個數組中,否則 instagram 將僅呈現第一個項目(在這種情況下為背景層)。 要解決此問題,請將粘貼板項目的聲明替換為以下代碼

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

(基本上只需刪除分隔兩個項目的關閉和打開支架)

同樣如先前的答案所述,請確保 info.plist 文件中的 LSApplicationQueriesSchemes 中包含“instagram-stories”

我在我的應用程序中使用了這個確切的代碼,現在它完美無缺

一切正常,我的代碼類似,適用於 iOS 11+。 我建議你以下幾點:

  1. 檢查您傳遞給粘貼板的圖像數據(無法使用UIImagePNGRepresentation轉換 jpg,反之亦然)
  2. 檢查 info.plist。 您應該在其中啟用“instagram-stories”方案( LSApplicationQueriesSchemes鍵)
  1. 正如 Alec 所說,您需要將所有 Instagram 數據放在一個列表中,而不是多個列表中。 查看元文檔中的示例:
NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.stickerImage" : stickerImage,
                               @"com.instagram.sharedSticker.backgroundTopColor" : backgroundTopColor,
                               @"com.instagram.sharedSticker.backgroundBottomColor" : backgroundBottomColor}];

2. 對於最近的讀者,從swift 4.2 和 iOS 12 UIImageJPEGRepresentation 開始被 jpegData 替換。 改變

let backgroundData = UIImageJPEGRepresentation(yourImage, 1.0)

let backgroundData = yourImage.jpegData(compressionQuality: 1.0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM