iOS调用系统分享问题

【iOS】【Swift】iOS调用系统分享问题

接触iOS开发时间不长,最近有一个需求,要从APP内部调用系统分享,把相册里的几张照片分享到小红书,照片是从相册里读取的。我按照网上的教程(UIActivityViewController)写完之后,发现我分享两张不同的照片A和B到小红书,小红书上显示的确实两张一样的照片A、A,我试了下其他的APP,iPhone的系统相册是正常的,时光相册是正常的,腾讯相册管家分享的效果跟我的一样是重复的。另外,我试了我自己的代码分享到除了小红书以外的平台是正常的,比如微信、QQ、备忘录等。实在是不能理解为什么,网上也没找到类似的问题。到底是我写的代码问题还是小红书的问题。希望有经验的开发者能给解答一下,十分感谢。

static func sharePhotosToXHS(photos: Array<String>) {
        DispatchQueue.main.async {
            var items = Array<Any>()
            // 遍历图片路径
            for photo in photos {
                if let image = UIImage(contentsOfFile: photo) {
                    // 压缩图片
                    if let imageCompressed = UIImage(data: image.compressImage(size: .one)) {
                        items.append(MyImageItemProvider(image: imageCompressed))
                    }
                }
            }
            let activityVC = UIActivityViewController(activityItems: items, applicationActivities: nil)
            activityVC.excludedActivityTypes = [
                UIActivity.ActivityType.addToReadingList,
                UIActivity.ActivityType.airDrop,
                UIActivity.ActivityType.assignToContact,
                UIActivity.ActivityType.copyToPasteboard,
                UIActivity.ActivityType.mail,
                UIActivity.ActivityType.markupAsPDF,
                UIActivity.ActivityType.message,
                UIActivity.ActivityType.postToFlickr,
                UIActivity.ActivityType.openInIBooks,
                UIActivity.ActivityType.postToFacebook,
                UIActivity.ActivityType.postToTencentWeibo,
                UIActivity.ActivityType.postToTwitter,
                UIActivity.ActivityType.postToVimeo,
                UIActivity.ActivityType.postToWeibo,
                UIActivity.ActivityType.print,
                UIActivity.ActivityType.saveToCameraRoll,
            ]

            activityVC.modalPresentationStyle = .fullScreen
            activityVC.completionWithItemsHandler = { type, completion, arr, err in
                print("type:\(type?.rawValue ?? ""), \(completion), \(arr), \(err)")
            }
            UIApplication.shared.delegate?.window??.rootViewController?.present(activityVC, animated: true)
        }
    }

class MyImageItemProvider: UIActivityItemProvider {
    private let image: UIImage
        
    init(image: UIImage) {
        self.image = image
        super.init(placeholderItem: image)
    }
    
    override var item: Any {
        return image
    }
    
    override func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
        return UIImage()
    }
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^