No debe modificar el archivo Info.plist
de su aplicación (ni nada en el paquete de su aplicación) en tiempo de ejecución. Esta es una mala práctica y también romperá tu aplicación si está firmada con código. Esto es más importante hoy en día ya que todas las aplicaciones en la tienda de aplicaciones deben tener código firmado.
Una mejor opción es utilizar la función de Servicios de aplicación TransformProcessType()
para mover su aplicación de un fondo a una aplicación de primer plano.
En primer lugar, establecer la clave LSUIElement
en la Info.plist
a YES
y luego comprobar un valor predeterminado de usuario en el lanzamiento para determinar si su aplicación debe estar funcionando como un agente o no su aplicación:
#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
Asegúrese de que usted don' olvide agregar el marco de servicios de aplicaciones a su proyecto.
Además, cambiar 'Info.plist' también fallará con privilegios insuficientes y en volúmenes de solo lectura (como imágenes de disco). – gcbrueckmann
Gracias Rob Keniger.its funciona bien para mí – sp309