Comment régler l'écran de locking, le papier peint et la sonnerie par programme dans l'iPhone?

Dans iPhone pouvons-nous définir l'écran de locking, le papier peint et la sonnerie par programme?

Si oui , alors s'il vous plaît laissez-moi savoir comment les définir?

Tout cela peut être fait facilement, mais sera rejeté par Apple.

La sonnerie peut être modifiée en modifiant com.apple.SpringBoard.plist , en particulier la touche de ringtone .

Le code suivant peut être utilisé pour lire le titre de la sonnerie des sonneries personnalisées (synchronisé par 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]; NSSsortingng *name = [customRingtone objectForKey:@"Name"]; cell.textLabel.text = name; 

Les fonds d'écran peuvent être écrasés à:

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

Ces exemples ont été utilisés dans l'une de mes applications Cydia. Il n'y a pas vraiment beaucoup plus pour eux, mais ceux-ci devraient vous aller dans la bonne direction.

utiliser l'API privée si vous pouvez vérifier PLStaticWallpaperImageViewController

La réponse par WrightsCS a cessé de fonctionner à un moment donné en raison d'un changement dans iOS. Malheureusement, c'est quelque chose que vous devez vivre si vous souhaitez utiliser des fonctionnalités non documentées .

Si vous avez toujours besoin de faire cela, pour les applications n'appartenant pas à l'App Store , ce code fonctionne dans iOS 9.3. Il pourrait cependant cesser de fonctionner dans n'importe quelle version future d'iOS. (voir commentaire ci-dessous: ne fonctionne plus dans 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 = NSClassFromSsortingng(@"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); 

Vous devrez append l'en-tête de l'API privée à votre projet. Vous pouvez généralement les find en ligne avec un peu de search, par exemple, ici .

Dans l'exemple ci-dessus, [SBSUIWallpaperPreviewViewController setWallpaperForLocations:] est appelé avec un argument de 3: 3 indiquant que l'image doit être utilisée pour les écrans de locking et d'accueil. 1 indique uniquement l'écran de locking. 2 indique l'écran d'accueil uniquement.


Pour une explication de la raison pour laquelle j'ouvre ce cadre dynamicment , voir ma réponse connexe ici .

Je n'ai pas de réponse concernant les sonneries . Cela devrait vraiment être une question distincte: des API complètement différentes au travail.