Nic*_*coC 5 app-store ios uiactivityviewcontroller swift ios13
我正在尝试使用共享我的应用程序UIActivityViewController,但无法重现与从 App Store 共享应用程序时相同的效果,这意味着:
当我单击 App Store 中的共享按钮时,我看到如下所示的内容:
但是当我尝试分享我的应用程序时,我有这个:
我使用的代码是:
if let logo = UIImage(named: "myLogo"), let websiteURL = URL(string: "https://itunes.apple.com/app/idxxxxxxxxxx") {
let objectsToShare = ["My App Name", websiteURL, logo] as [Any]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: [])
if let popoverController = activityVC.popoverPresentationController {
popoverController.sourceView = self.view
popoverController.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
}
present(activityVC, animated: true)
}
Run Code Online (Sandbox Code Playgroud)
该if let popoverController = ...循环是为了防止使用 iPad 时发生崩溃。
我需要改变什么才能达到App Store的效果?(要有带有标题和副标题的图像)
此外,一旦我与例如共享应用程序Messages,这就是区别:
我怎样才能达到同样的效果?(带有标题和副标题的单个图像,作为奖励,一个视频)。我不确定这是否是 iOS 13 的问题,因为所有类似的问题都没有相同的应用程序共享弹出窗口。
你必须使用新的LinkPresentation框架。
这本质上涉及 UIActivityItemSource 一致性,然后检索包含活动视图和您正在共享的数据的元数据。数据可以在本地检索或下载。
ExampleController: UIViewController {
var metadata: LPLinkMetadata?
func share() {
let activityView = UIActivityViewController(activityItems: [self], applicationActivities: nil)
present(activityView, animated: true)
}
...
}
extension ExampleController: UIActivityItemSource {
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return metadata
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
return metadata
}
func activityViewControllerLinkMetadata(_: UIActivityViewController) -> LPLinkMetadata? {
metadata = LPLinkMetadata()
metadata.title = "Title"
metadata.originalURL = URL(string: "Description")
metadata.url = metadata.originalURL
// Using a locally stored item
metadata.iconProvider = NSItemProvider(object: UIImage(named: "image")!)
metadata.imageProvider = NSItemProvider.init(contentsOf:
Bundle.main.url(forResource: "image", withExtension: "JPG"))
return metadata
}
}
Run Code Online (Sandbox Code Playgroud)
WWDC 演示: https://developer.apple.com/videos/play/wwdc2019/262/
| 归档时间: |
|
| 查看次数: |
4969 次 |
| 最近记录: |