블로그 이미지
안녕하세요~ iolate(isho) 의 블로그 입니다~! iolate

카테고리

분류 전체보기 (164)
Server, Cloud (7)
끄적끄적 (9)
Linux, Ubuntu (22)
개발질 (44)
Mac (18)
iOS (23)
IoT (13)
NAS (1)
Web (5)
Network (3)
Review (10)
기타 (9)
비공개글 (0)
Total603,846
Today18
Yesterday401


PreferenceLoader.

간혹 앱스토어 앱 중에 설정 앱 안에 해당 앱의 설정이 생기는 것을 봤을 것이다.

앱스토어 앱 중에 설정 앱 안에 해당 앱의 설정이 생기는 것을 봤을 것이다.

앱스토어 앱 중에 설정 안에 앱의 설정이 생기는 것을 봤을 것이다.
PreferenceLoader(이하 PL) 는 Cydia 의 앱, 트윅들이 이와 마찬가지로 설정 앱 안에 설정을 만드는 것을 도와준다.
간단한 plist 방식부터 원하는 대로 만들기 위한 bundle 형태까지 지원한다.
PL 자체는 설정 앱을 후킹해서 설정앱이 plist 파일을 읽어들이게 할 뿐이니 만약 호환성 문제가 생긴다면 그건 PL 문제가 아니니 문제가 있다면 버젼마다 테스트를 해보자.

우선 plist 로만 이루어진 설정이든, bundle 이 따로 있든 
/Library/PreferenceLoader/Preferences/ 에 관련 파일이 있어야 한다. 하위 폴더를 생성해도 상관 없다.

일단 이 글에서는 간단한 plist 만을 이용한 설정 제작을 소개할 예정이다.

우선 가장 유용했던 URL을 소개한다. 그나마 제일 자세히 설명된 페이지. 당연히 영문!


모든 포맷(아마도) 이 설명된 곳은 여기 밖에 못본듯..


또 다른 주소를 찾았다. 어떤 앱의 설정 파일인데 예시로 들어져 있는 것을 보니 상당히 많은 종류가 있는 것 같다.


맥이며 XCode3 가 설치되어 있다면 Property List Editor 가 설치되어 있으니 이것 기준으로 설명하겠다.
XCode4 에서는 XCode 자체에 Property List 편집기가 포함되어 있으니 알아서 사용.


대강 기초 틀은 이렇다. (Type에 유의하자.)

(밑에서 설명하려 했는데 밑으로 내려가니 그림이 안보이네. items 하위 항목에 대한 설명은 펼치기!)

더보기



우선 루트 하위에 title, entry, items 값이 있게 되는데 이중 title, entry 부분 부터 봐주시길..



entry부분이 모두 여기에 보이게 된다. 여기서는 아이콘을 내가 넣지 않았으니 안뜨는데, 아이콘에는 경로를 써주면 된다. 다른 경로라도 상관없고 plist 와 같은 폴더에 있다면 그냥 이름만 써주면 된다.
cell값은 건드릴것 없고 label은 바꿔주면 된다.



root/title 에 있는 값이 여기에 들어 오게 된다.


items 하위 설명은 위에 첫번째 그림 밑에 펼치기를 누르도록.

잘 모르겠으면 예시파일을 하나 만들어서 아이폰에 넣어서 테스트 해보자.
리스프링이 필요없으며 그냥 설정앱을 다시 열어주면 된다.





items 설명하면서도 말하였지만, 값의 저장경로는
/var/mobile/Library/Preferences/ 하위에  defaults에 지정한 이름으로 저장이 된다.
보통 앱 id와 같게 한다.


이제 중요한 것은 앱에서 설정을 불러오는 방법!

더보기


방식은 여러가지가 될 수 있다.
위의 소스는 예전에 내가 그냥 SwitcherMod 소스에서 퍼온것이고, 나의 경우 필요에 따라 만들어진 전처리 매크로를 통해 간편히 사용하고 있다..ㅎ
예를 들면 아래와 같이...

더보기




설정이 바뀌었을때 노티를 받는 방법도 있다.

설명하긴 귀찮으니   https://github.com/rpetrich/SwitcherMod 보고 참고 하도록 하자....

Bundle 로 만들어서 값을 바꿀때에는 notify_post 등으로 직접 노티를 쏴주면 크게 차이없이 동일하게 사용가능 하다.

'개발질 > iOS' 카테고리의 다른 글

BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
DEBIAN PACKAGING (deb) 만들기 (수정)  (1) 2011.01.30
PreferenceLoader 사용법  (0) 2011.01.30
MobileSubstrate Extension with XCode  (0) 2011.01.07
cydia 앱, MobileSubstrate  (0) 2011.01.07
Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함