Вы не должны изменять файл Info.plist
вашего приложения (или что-либо в комплекте вашего приложения) во время выполнения.Это плохая практика и также сломает ваше приложение, если оно подписано кодом.В настоящее время это важнее, поскольку все приложения в магазине приложений должны иметь кодовую подпись.
Лучшим вариантом является использование функции служб приложений TransformProcessType()
для перемещения приложения из фона в приложение переднего плана.
Сначала установите LSUIElement
ключ в Info.plist
вашего приложения на YES
, а затем проверьте пользовательское значение по умолчанию при запуске, чтобы определить, должно ли ваше приложение работать как агент или нет:
#import <ApplicationServices/ApplicationServices.h>
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"LaunchAsAgentApp"])
{
ProcessSerialNumber psn = { 0, kCurrentProcess };
TransformProcessType(&psn, kProcessTransformToForegroundApplication);
SetFrontProcess(&psn);
}
}
@end
Убедитесь, что вы не забыли добавить платформу служб приложений в свой проект.