iPhone에서 잠금 화면, 배경 화면 및 벨소리를 프로그래밍 방식으로 설정할 수 있습니까?아이폰에서 화면 잠금, 배경 화면 및 벨소리를 프로그래밍 방식으로 설정하는 방법은 무엇입니까?
예 인 경우 설정 방법을 알려주십시오.
iPhone에서 잠금 화면, 배경 화면 및 벨소리를 프로그래밍 방식으로 설정할 수 있습니까?아이폰에서 화면 잠금, 배경 화면 및 벨소리를 프로그래밍 방식으로 설정하는 방법은 무엇입니까?
예 인 경우 설정 방법을 알려주십시오.
이것은 모두 쉽게 수행 할 수 있지만 Apple에서는 거부합니다.
com.apple.SpringBoard.plist
, 특히 ringtone
키를 변경하여 벨소리를 변경할 수 있습니다.
다음 코드는 맞춤식 벨소리 (iTunes에서 동기화 됨)의 실제 벨소리 제목을 읽는 데 사용할 수 있습니다.
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";
이 예 내 Cydia를 애플 리케이션 중 하나에서 사용되었다 :에서
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;
배경 화면
은 덮어 쓸 수 있습니다. 정말로 그들에게 더 많은 것이 아니라, 이것들은 당신을 올바른 방향으로 가야합니다.배경 화면 경로가 더 이상 유효하지 않습니다. – EightyEight
다운 투표가 필요 없습니다. 질문이 정답으로 선택되었을 때 유효했습니다. – WrightsCS
새 경로를 말할 수는 없지만 사과가 새로운 이미지 포매 트를 사용한다고 말할 수 있습니다. 그것의 cpbitmap, 당신이 이미지를 tomsave 원한다면 .png 또는 .jpeg를 .cpbitmap으로 변환해야합니다. –
answer by WrightsCS 인해 아이폰 OS의 변화에 어떤 시점에서 작동이 중지 확인할 수 있습니다. 죄송합니다. 문서화되지 않은 기능을 사용하려면이 기능을 사용해야합니다.
이 작업을 수행해야하는 경우 이 아닌 앱 스토어에만 적용되는의 경우이 코드는 iOS 9.3에서 작동합니다. 그것은 미래의 iOS 릴리즈에서 작동을 멈출 수 있습니다. (아래에 의견을하지 참조 : 더 이상 아이폰 OS 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);
당신은 당신의 프로젝트에 민간 API 헤더를 추가해야합니다. 당신은 보통 작은 검색, for example, here 온라인으로 이들을 찾을 수 있습니다.
위의 예에서 [SBSUIWallpaperPreviewViewController setWallpaperForLocations:]
은 3 : 3의 인수로 호출되며 이미지는 잠금 및 홈 스크린 모두에 사용해야 함을 나타냅니다. 1은 화면 잠금 만 나타냅니다. 2는 홈 화면 만 나타냅니다. 내가 동적으로을이 프레임 워크를 열 이유에 대한 설명은
나는 벨소리에 대한 대답이 없습니다. 이것은 정말로 별개의 질문입니다 : 직장에서 완전히 다른 API.
불행히도 이것은 iOS 10에서는 더 이상 작동하지 않습니다. @Nate는 iOS 10에서 실행되도록하는 방법에 대한 정보가 있습니까? (iOS 10의 경우 코드가 오류로 인해 충돌합니다 : 어설 션 실패 : (0), function SBSUIWallpaperClearVideo, 파일 /BuildRoot/Library/Caches/com.apple.xbs/Sources/SpringBoardUIServices/SpringBoard-3563.15.8.9/SBSUIWallpaperUtilities.m, 줄 143.) 아마도 그들은 몇 가지 똑똑한 주장을 추가했다 ...) –
@ GuntisTreulands, 네, 나는 또한 그것을 알아 차렸다. [iOS 10 헤더] (https://github.com/nst/iOS-Runtime-Headers/blob/master/PrivateFrameworks/SpringBoardUIServices.framework/SBSUIWallpaperPreviewViewController.h)를보고 있는데 API가 여전히있는 것처럼 보입니다. . 이제 자격으로 보호받을 수 있습니다. 나는 과거에이 일을하는 다른 방법을 찾았습니다. 그래서 이번 주말에이 일을하기 위해 다른 일을 시도하면서 시간을 보냅니다. – Nate
@ GuntisTreulands, 나는 또한'PLStaticWallpaperImageViewController'에서 비슷한 방법을 사용하려했지만 실패했습니다. iOS가 앱이 샌드 박스 외부로 변경하려고한다는 것을 인식합니다. 또한 [PhotoLibrary] (https://github.com/nst/iOS-Runtime-Headers/blob/master/PrivateFrameworks/PhotoLibrary.framework/PLWallpaperImageViewController.h)에 다른 API가 있음을 알았지 만 일부 리버스 엔지니어링을해야합니다. 그것이 취하는 매개 변수가 무엇인지 알아 내려고합니다. 나는 여기서 당신을 계속 업데이트 할 것이다. – Nate
+1 많은 앱에서 보았습니다. http://stackoverflow.com/questions/15024361/add-image-on-lock-screen-in-ios-app-when-app-is-running-in-background – HDdeveloper