是否可以在swift中读取权利文件

时间:2016-05-17 15:30:45

标签: swift readfile entitlements

我正在我的应用中实现通用深层链接。当我注册不同的域时,它会创建一个AppName.entitlements文件

我想像plist一样阅读这个文件的值。

我试过

  

如果let path = NSBundle.mainBundle()。pathForResource(" AppName",ofType:   "权利"){}

但它返回nil

是否可以阅读此类文件?

4 个答案:

答案 0 :(得分:2)

该文件未复制到您的应用中(请参阅Xcode的目标复选框)。它仅用于构建

权利是Xcode的配置文件

所以:没有

答案 1 :(得分:0)

我找到的解决方案:

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
    }()
}

在构建之前,根据需要使用自定义脚本更改entitlementsInfo.plist

答案 2 :(得分:0)

我确实研究了这个主题,实际上很简单。

您使用运行脚本来获取权利并将其合并到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"]

答案 3 :(得分:0)

在研究这个时,我发现了以下博客文章 https://medium.com/swlh/reading-application-entitlements-with-swift-65cff184e840 其中@mateuszmatrejek 解释了如何在运行时解析二进制文件以提取权利。

这种方法非常低级和复杂。我看到这种方法的主要优点是,如果您正在开发一个框架或库,这将有助于读取使用导入您的库或框架的应用程序的权利。