pantalla original opaca hora fondo como colores color cambio cambiar ios objective-c iphone ios4 iphone-privateapi

ios - original - ¿Cómo configurar la pantalla de bloqueo, el fondo de pantalla y el tono de llamada mediante programación en iPhone?



la pantalla de mi iphone se ve opaca (3)

En iPhone, ¿podemos configurar la pantalla de bloqueo, el fondo de pantalla y el tono de llamada de forma programática?

Si es así, ¿por favor, hágamelo saber cómo configurarlos?


La respuesta de WrightsCS dejó de funcionar en algún momento debido a un cambio en iOS. Desafortunadamente, esto es algo con lo que tiene que vivir si desea usar funciones no documentadas .

Si aún necesita hacer esto, para aplicaciones que no son de la App Store , este código funciona en iOS 9.3. Sin embargo, podría dejar de funcionar en cualquier versión futura de iOS. (ver comentario a continuación: ya no funciona en iOS 10)

#import "SBSUIWallpaperPreviewViewController.h" #import <dlfcn.h> // open the private framework dynamically void *handle = dlopen("/System/Library/PrivateFrameworks/SpringBoardUIServices.framework/SpringBoardUIServices", RTLD_NOW); UIImage *wallpaper = [UIImage imageNamed: @"background.jpg"]; Class sbClass = NSClassFromString(@"SBSUIWallpaperPreviewViewController"); // we create a view controller, but don''t display it. // just use it to load image and set wallpaper SBSUIWallpaperPreviewViewController *controller = (SBSUIWallpaperPreviewViewController*)[[sbClass alloc] initWithImage: wallpaper]; [controller setWallpaperForLocations: 3]; // 3 -> set both for lock screen and home screen dlclose(handle);

Deberá agregar el encabezado de la API privada a su proyecto. Por lo general, puede encontrarlos en línea con una pequeña búsqueda, por ejemplo, aquí .

En el ejemplo anterior, se [SBSUIWallpaperPreviewViewController setWallpaperForLocations:] con un argumento de 3: 3 indica que la imagen se debe usar para las pantallas de bloqueo y de inicio. 1 indica pantalla de bloqueo solamente. 2 indica solo la pantalla de inicio.

Para una explicación de por qué abro este marco dinámicamente , vea mi respuesta relacionada aquí .

No tengo una respuesta con respecto a los tonos de llamada . Esto realmente debería ser una pregunta separada: API completamente diferentes en el trabajo.


Todo esto se puede hacer fácilmente, pero será rechazado por Apple.

El tono de llamada se puede cambiar alterando com.apple.SpringBoard.plist , específicamente la clave de ringtone .

El siguiente código se puede utilizar para leer el título de tono de llamada de tonos de timbre personalizados (sincronizado por iTunes).

NSMutableDictionary *custDict = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/private/var/mobile/Media/iTunes_Control/iTunes/Ringtones.plist"]; NSMutableDictionary *dictionary = [custDict objectForKey:@"Ringtones"]; NSArray *keys = [dictionary allKeys]; id key = [keys objectAtIndex:indexPath.row]; NSMutableDictionary *customRingtone = [dictionary objectForKey:key]; NSString *name = [customRingtone objectForKey:@"Name"]; cell.textLabel.text = name;

Los fondos de pantalla se pueden sobrescribir en:

NSString *homePath1 = @"/private/var/mobile/Library/SpringBoard/HomeBackground.jpg"; NSString *homePath2 = @"/private/var/mobile/Library/SpringBoard/HomeBackgroundPortrait.jpg"; NSString *lockPath1 = @"/private/var/mobile/Library/SpringBoard/LockBackground.jpg"; NSString *lockPath2 = @"/private/var/mobile/Library/SpringBoard/LockBackgroundPortrait.jpg";

Estos ejemplos fueron usados ​​en una de mis aplicaciones de Cydia. En realidad, no hay mucho más para ellos, pero esto debería llevarlo en la dirección correcta.


use api privado si puede verificar PLStaticWallpaperImageViewController