从键盘扩展中检测源可执行文件

Detect source executable from keyboard extension

我有两个不同的应用程序目标(付费版和免费版)使用相同的键盘扩展目标。键盘关注的两个应用程序目标之间的唯一区别是当前使用预处理器宏定义的一些字符串值。我需要一种方法来确保扩展接收到的字符串值与源可执行文件接收到的值相同。

扩展是否可以直接访问与它一起打包的可执行文件的信息?我可能可以在第一次启动时操纵共享的 NSUserDefaults 来存储键盘的字符串值,但这似乎是迂回和不安全的。

我能够通过像这样检查包标识符来完成我需要的:

#define FOOFree [[[NSBundle mainBundle] bundleIdentifier] containsString:@"free"]

然后我使用宏的布尔结果来设置应用程序和扩展程序的字符串值,因为我的扩展程序的包标识符与其源应用程序有一个匹配的命名空间(如果惯例是这样的话,应该总是这样)跟随)。