是否可以读取 swift 中的权利文件
Is it possible to read entitlements files in swift
我正在我的应用程序中实现通用深度链接。当我注册不同的域时,它会创建一个 AppName.entitlements 文件
我想像 plist 一样读取这个文件的值。
我试过了
if let path = NSBundle.mainBundle().pathForResource("AppName", ofType:
"entitlements") { }
但是 returns nil
是否可以读取此类文件?
该文件未复制到您的应用中(请参阅 Xcode 的目标复选框)。仅用于建筑
权利是 Xcode
的配置文件
所以:没有
我找到的解决方案:
将 appGroup
添加到 Info.Plist
文件
<key>appGroup</key>
<string>group.com.acronis.mobile.ios.development</string>
要读取字符串,请使用以下代码:
extension String {
// MARK: - Static
static var appGroup: String = {
guard let bundleAppGroup = Bundle.main.infoDictionary?["appGroup"] as? String else {
fatalError("The application must contain appGroup in Info.plist file")
}
return bundleAppGroup
}()
}
如果需要,使用您的自定义脚本在构建之前更改 entitlements
和 Info.plist
。
我深入研究了这个主题,其实很简单。
您使用 运行 脚本获取权利并将其合并到 Info.plist:
ENTITLEMENTS= # Path to Project.entitlements #
INFOPLIST= # Path to Info.plist #
echo "Writing entitlements to Info.plist";
KEY="entitlements-from-script";
/usr/libexec/PlistBuddy -c "delete $KEY" "$INFOPLIST";
/usr/libexec/PlistBuddy -c "add $KEY dict" "$INFOPLIST";
/usr/libexec/PlistBuddy -c "merge $ENTITLEMENTS $KEY" "$INFOPLIST";
现在您可以在代码中使用它了:
let entitlements = Bundle.main.infoDictionary?["entitlements-from-script"]
在查看此内容时,我发现了以下博客 post
https://medium.com/swlh/reading-application-entitlements-with-swift-65cff184e840
@mateuszmatrejek 解释了如何在 运行 时间解析二进制文件以提取权利。
这种方法非常低级且复杂。我看到这种方法的主要优势是,如果您正在处理框架或库,这将有助于读取使用导入您的库或框架的应用程序的权利。
我正在我的应用程序中实现通用深度链接。当我注册不同的域时,它会创建一个 AppName.entitlements 文件
我想像 plist 一样读取这个文件的值。
我试过了
if let path = NSBundle.mainBundle().pathForResource("AppName", ofType:
"entitlements") { }
但是 returns nil
是否可以读取此类文件?
该文件未复制到您的应用中(请参阅 Xcode 的目标复选框)。仅用于建筑
权利是 Xcode
的配置文件所以:没有
我找到的解决方案:
将 appGroup
添加到 Info.Plist
文件
<key>appGroup</key>
<string>group.com.acronis.mobile.ios.development</string>
要读取字符串,请使用以下代码:
extension String {
// MARK: - Static
static var appGroup: String = {
guard let bundleAppGroup = Bundle.main.infoDictionary?["appGroup"] as? String else {
fatalError("The application must contain appGroup in Info.plist file")
}
return bundleAppGroup
}()
}
如果需要,使用您的自定义脚本在构建之前更改 entitlements
和 Info.plist
。
我深入研究了这个主题,其实很简单。
您使用 运行 脚本获取权利并将其合并到 Info.plist:
ENTITLEMENTS= # Path to Project.entitlements #
INFOPLIST= # Path to Info.plist #
echo "Writing entitlements to Info.plist";
KEY="entitlements-from-script";
/usr/libexec/PlistBuddy -c "delete $KEY" "$INFOPLIST";
/usr/libexec/PlistBuddy -c "add $KEY dict" "$INFOPLIST";
/usr/libexec/PlistBuddy -c "merge $ENTITLEMENTS $KEY" "$INFOPLIST";
现在您可以在代码中使用它了:
let entitlements = Bundle.main.infoDictionary?["entitlements-from-script"]
在查看此内容时,我发现了以下博客 post https://medium.com/swlh/reading-application-entitlements-with-swift-65cff184e840 @mateuszmatrejek 解释了如何在 运行 时间解析二进制文件以提取权利。
这种方法非常低级且复杂。我看到这种方法的主要优势是,如果您正在处理框架或库,这将有助于读取使用导入您的库或框架的应用程序的权利。