Question

iPhone peut nous mettre l'écran de verrouillage, papier peint et sonnerie programme?

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

Était-ce utile?

La solution

Cela peut être fait facilement, mais sera rejetée par Apple.

La sonnerie peut être modifiée en altérant com.apple.SpringBoard.plist, en particulier sur la touche ringtone.

Le code suivant peut être utilisé pour lire le titre de sonnerie réelle de sonneries personnalisées (par iTunes synchronisé).

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;

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

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";

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

Autres conseils

La réponse par WrightsCS a cessé de travailler à un moment donné en raison d'un changement dans iOS. Malheureusement, cela est quelque chose que vous devez vivre avec si vous souhaitez utiliser sans papier caractéristiques.

Si vous avez encore besoin de ce faire, pour les applications non seulement App Store , ce code fonctionne dans iOS 9.3. Il pourrait cesser de fonctionner dans toute future version iOS, cependant. (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 = 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);

Vous aurez besoin d'ajouter l'en-tête API privée à votre projet. Vous pouvez généralement trouver ces en ligne avec un peu de recherche, par exemple, ici .

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


Pour une explication des raisons pour lesquelles j'ouvre ce cadre jusqu'à dynamiquement , voir ma réponse ici connexe .

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

utiliser api privé si vous le pouvez vérifier PLStaticWallpaperImageViewController

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top