Swift - 小部件无法访问应用程序组
Swift - Widget not able to access app group
我最近一直在尝试制作一个小部件,并希望在我的小部件和我的应用程序之间共享一段数据。
static var sharedDataFileURL: URL {
let appGroupIdentifier = "group.com.unknownstudios.yk"
guard let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupIdentifier)
else { preconditionFailure("Expected a valid app group container") }
return url.appendingPathComponent("userID.plist")
}
上面的代码在我的应用程序上运行良好,但是当我 运行 它在我的小部件上时,它会给我以下输出。我已检查该应用程序组是否正确并且在 iOS 应用程序和小部件上均处于活动状态。
[unspecified] container_create_or_lookup_path_for_platform: client is not entitled
[unspecified] container_create_or_lookup_app_group_path_by_app_group_identifier: client is not entitled
Fatal error: Expected a valid app group container: file WidgetExtension/Library.swift, line 143
编辑:
我也尝试过使用 UserDefaults,但它们也不起作用。
以下是我使用FileManager和UserDefaults的方式
UserDefaults(suiteName: "group.com.unknownstudios.yk")!.set("**USERID**", forKey: "userID")
let data = Data("**USERID**".utf8)
do {
try data.write(to: URL.sharedDataFileURL, options: .atomic)
} catch {
print(error.localizedDescription)
}
以下是我尝试从小部件读取数据的方式:
var userID: String? = {
if let userid = UserDefaults(suiteName: "group.com.unknownstudios.yk")!.string(forKey: "userID") {
print(userid)
return userid
} else if let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.unknownstudios.yk") {
if let data = try? Data(contentsOf: url.appendingPathComponent("userID.plist")), let string = String(data: data, encoding: .utf8) {
return string
}
}
return nil
}()
WidgetExtension 应用组:
主要应用、应用组:
我发现我的问题是什么。我不小心 select 编辑了签名和功能下的发布选项卡。这导致我的应用程序组在检查发布时出错,从而导致错误发生。
我只需要 select All 和 re-add 应用程序组功能使其再次工作。
我最近一直在尝试制作一个小部件,并希望在我的小部件和我的应用程序之间共享一段数据。
static var sharedDataFileURL: URL {
let appGroupIdentifier = "group.com.unknownstudios.yk"
guard let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroupIdentifier)
else { preconditionFailure("Expected a valid app group container") }
return url.appendingPathComponent("userID.plist")
}
上面的代码在我的应用程序上运行良好,但是当我 运行 它在我的小部件上时,它会给我以下输出。我已检查该应用程序组是否正确并且在 iOS 应用程序和小部件上均处于活动状态。
[unspecified] container_create_or_lookup_path_for_platform: client is not entitled
[unspecified] container_create_or_lookup_app_group_path_by_app_group_identifier: client is not entitled
Fatal error: Expected a valid app group container: file WidgetExtension/Library.swift, line 143
编辑:
我也尝试过使用 UserDefaults,但它们也不起作用。
以下是我使用FileManager和UserDefaults的方式
UserDefaults(suiteName: "group.com.unknownstudios.yk")!.set("**USERID**", forKey: "userID")
let data = Data("**USERID**".utf8)
do {
try data.write(to: URL.sharedDataFileURL, options: .atomic)
} catch {
print(error.localizedDescription)
}
以下是我尝试从小部件读取数据的方式:
var userID: String? = {
if let userid = UserDefaults(suiteName: "group.com.unknownstudios.yk")!.string(forKey: "userID") {
print(userid)
return userid
} else if let url = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.unknownstudios.yk") {
if let data = try? Data(contentsOf: url.appendingPathComponent("userID.plist")), let string = String(data: data, encoding: .utf8) {
return string
}
}
return nil
}()
WidgetExtension 应用组:
主要应用、应用组:
我发现我的问题是什么。我不小心 select 编辑了签名和功能下的发布选项卡。这导致我的应用程序组在检查发布时出错,从而导致错误发生。