Может ли приложение iOS читать свои собственные права во время выполнения?

Может ли приложение iOS обнаруживать, проверять или иным образом читать свои собственные права во время выполнения?

В идеале я мог бы прочитать весь (обработанный) контент моего файла .entitlements как plist. Получение только префикса идентификатора приложения будет приемлемым для второго.

Цели включают в себя: разрешение подписки на приложение с различными префиксами идентификатора приложения без необходимости внесения соответствующих изменений в код; и действовать по-разному в присутствии или отсутствии общих групп доступа к цепочке ключей. Это код библиотеки, поэтому чем меньше я накладываю на конфигурацию клиентского приложения, тем лучше.

Ответ 1

Короче говоря, нет. Файл прав используется только во время компиляции и не копируется в комплект приложения.

Уточнение. Во время разработки права записываются в файл embedded.mobileprovision в комплекте приложения. Когда ваше приложение будет выпущено как IPA в App Store, оно не будет содержать embedded.mobileprovision.

Ответ 2

AFAIK, вы можете это сделать. Например, Чтобы прочитать YourFileName.entitlements и получить идентификатор AppGroup, выполните следующие шаги:

Шаг 1: Добавьте .entitlements к своей цели "Copy Bundle Resources"

Шаг 2: Использование ниже исходного кода:

NSString *path = [[NSBundle mainBundle] pathForResource:@"YourFileName"
                                                 ofType:@"entitlements"];
NSDictionary *dict = [[NSDictionary alloc]initWithContentsOfFile:path];
NSString *suiteName =  [[dict objectForKey:@"com.apple.security.application-groups"] firstObject]; // It your data