接触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()
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: