是否可以向我的应用程序添加自定义共享操作,该操作在另一个应用程序中也可见?

问题描述 投票:0回答:1
ILovePDF、Google Chrome 等应用程序在 iOS 共享表的第三行中具有此功能,您可以在其中添加自定义操作,例如“在 Chrome 中打开”和“使用 Ilovepdf 进行编辑”。谁能帮助我如何实现这个功能?

Custom actions in iOS ShareSheet - screenshot

我在互联网上获得的所有资源仅显示我的应用程序共享表中自定义操作的实现,而不是其他应用程序的共享表中的实现。

我提到的有关集成自定义操作的所有文章,都讨论将它们集成到您正在构建的应用程序的共享表中,而不是如何在其他应用程序的共享表中显示这些操作

ios swiftui share ios8-share-extension
1个回答
0
投票
是的,您将

Share Extension

 添加到您的目标并构建自定义共享视图。

1. 将共享扩展添加到应用程序的项目中,方法是转到应用程序的项目页面并单击加号图标,或者文件 > 新建 > 目标并查找 Share Extension


2. 构建一个自定义视图,甚至在新创建的扩展中使用 SwiftUI。我将在这里提供一个模板视图作为示例:

import UIKit import Social import SwiftUI class ShareViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //view.backgroundColor = .red /// Interactive Dismiss Disabled isModalInPresentation = true if let extensionContext = extensionContext, let itemProvider = (extensionContext.inputItems.first as? NSExtensionItem)?.attachments { let hostingView = UIHostingController(rootView: ShareViewTemplate(itemProvider: itemProvider, extensionContext: extensionContext)) hostingView.view.frame = view.frame view.addSubview(hostingView.view) } } } fileprivate struct ShareViewTemplate: View { //MARK: - Properties var itemProvider: [NSItemProvider] var extensionContext: NSExtensionContext? var body: some View { VStack { Text("Your Custom View using SwiftUI") } .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center) .overlay(alignment: .topLeading) { Button("", systemImage: "xmark") { dismiss() } .padding() } } private func dismiss() { extensionContext?.completeRequest(returningItems: []) } }

3. 当您运行应用程序时,系统会询问您希望在哪个应用程序上运行共享扩展。假设我选择了画廊:

4. 然后在您选择的应用程序中,例如,Photos

应用程序,当使用共享选项时,您也会看到您的自定义应用程序:

5. 单击它时,您将看到自定义的 SwiftUI

 视图:

我希望能回答你的问题!让我知道!

© www.soinside.com 2019 - 2024. All rights reserved.