Frage

iPhone können wir setzen Sie den Bildschirm sperren, Wallpaper und Klingelton programmatisch?

Wenn Ja , dann lassen Sie es mich wissen, wie sie setzen?

War es hilfreich?

Lösung

Dies alles kann leicht durchgeführt werden, wird aber von Apple abgelehnt werden.

Der Klingelton kann durch Veränderung com.apple.SpringBoard.plist, insbesondere die ringtone Schlüssel geändert werden.

Der folgende Code kann die tatsächlichen Klingelton Titel von individuellen Klingeltönen (von iTunes synchronisiert) zum Lesen verwendet werden.

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;

Die Hintergrundbilder können überschrieben werden:

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

Diese Beispiele wurden in einem meiner Cydia-Apps verwendet. Theres wirklich sie nicht viel mehr, aber diese sollten Sie in der richtigen Richtung gehen bekommen.

Andere Tipps

Die Antwort von WrightsCS irgendwann aufgehört zu arbeiten aufgrund einer Änderung in iOS. Leider ist dies etwas, das man mit leben müssen, wenn Sie verwenden möchten ohne Papiere verfügt.

Wenn Sie dies noch tun müssen, um, für nicht-App Store apps nur , diesen Code funktioniert in iOS 9.3. Es könnte stoppen in jeder zukünftigen iOS-Release arbeiten, though. (siehe Kommentar unten: nicht mehr funktioniert in 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);

Sie müssen den privaten API-Header zu einem Projekt hinzuzufügen. Sie können in der Regel diese online mit einem wenig suchen finden, zum Beispiel hier .

In dem obigen Beispiel [SBSUIWallpaperPreviewViewController setWallpaperForLocations:] wird mit einem Argument von 3 genannt: 3 zeigt das Bild sollte sowohl für verwendet werden Schloss und Home-Bildschirme. 1 zeigt Bildschirm sperren nur. 2 zeigt Home-Bildschirm nur.


Für eine Erklärung, warum ich diesen Rahmen öffnen dynamisch finden Sie unter hier .

Ich habe nicht eine Antwort in Bezug auf Klingelton . Dies sollte wirklich eine andere Frage sein. Ganz andere APIs bei der Arbeit

verwenden private api, wenn Sie können überprüfen PLStaticWallpaperImageViewController

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top