我正在开发一个应用程序(自定义结构)可以在不同手机上运行的应用程序示例之间传输。该应用程序应该能够打开共享表并将数据发送到另一个设备,在那里它将自动打开应用程序以导入数据。(支持共享表是很重要的,因为应用程序需要在没有互联网接入时发挥作用,而空投似乎是唯一的在没有互联网的情况下在电话之间传输数据的方法。)
到目前为止,我已经使我想在应用程序的示例之间传输的结构符合可传输协议。我还在代码和info. plist中定义了一个自定义的统一类型标识符。有了这个,我就可以使用共享表导出结构,它会发送一个以. stageresult结尾的json文件。然而,我的问题是,当其他设备接收到文件时,它们不会自动打开它,也不会给予任何手动操作的方法。此外,我在网上找不到任何关于如何处理导入自定义文件的信息。有没有一种方法可以调用一个函数来将导入的数据加载到我的应用程序中?使用Swift/SwiftUI导入通用类型标识符的正确方法是什么
import UniformTypeIdentifiers
import SwiftUI
import Foundation
extension UTType {
static var stageresult: UTType { UTType(exportedAs: "com.example.stageresult") }
}
struct StageResult: Codable {
var name: String
var start: Bool
var recordings: [Recording]
}
struct Recording: Codable {
var plate: String
var timestamp: Double
}
extension StageResult: Transferable {
static var transferRepresentation: some TransferRepresentation {
CodableRepresentation(contentType: .stageresult)
}
}
Defining Type IdentifiersInfo.plist Supports Opening Documents In Place
1条答案
按热度按时间dbf7pr2w1#
不久前,我遇到了同样的问题。不幸的是,Apple没有太多关于这个问题的文档。在搜索了很长一段时间后,我终于找到了Apple框架工程师的this tweet,这帮助了我。
我的应用程序的用户可以使用共享表功能彼此共享食谱。这些食谱的接收者可以导入它们并保存它们以供以后使用。为了方便这一点,我在主视图中添加了.onOpenURL修饰符,以处理新食谱的导入。
关于你提问的自动开启部分;不幸的是,我自己还没有找到一个解决方案。不过,我发现了一个解决方案。如果你可以访问保存项目的共享表(这可以通过文件应用程序实现),那么你的应用程序应该可以处理它。另一个选择是使用新的粘贴按钮,甚至是带有文件拖放功能的
.dropDestination
功能。**编辑:**你也可以查看一些关于document based apps的苹果文档。这可能就是你要找的。