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

카테고리

분류 전체보기 (156)
끄적끄적 (9)
Server, AWS (6)
Linux, Ubuntu (22)
개발질 (44)
Mac (18)
iOS (23)
IoT (6)
Web (5)
ROS (1)
Network (3)
Review (10)
마인크래프트 (1)
WF IT봉사 (0)
기타 (8)
비공개글 (0)
Total559,731
Today39
Yesterday230
솔직히 이런것들 한국인보단 외국인들이 훨씬 많이 보겠지만
영어로 쓰는건 많이 무리가 있으니.....ㅋㅋ

우선 첫번째, 설정에서 Activator Listener 뷰를 가져오는 방법.
THEOS 에 포함된 헤더엔 관련 부분이 빠져 있으니 그냥 https://github.com/rpetrich/libactivator/ 에서 libactivator.h 를 가져오도록 하자.

libactivator.h 임포트 후에
 

LAEventSettingsController *vac = [[[LAEventSettingsController alloc] initWithModes:[NSArray arrayWithObjects:@"springboard"@"application"@"lockscreen"nil] eventName:eventName] autorelease];

[self pushController:vac];


와 같이 호출해 주면 된다. 

근데,, 사실 저 코드 만으로는 문제가 있는게, PreferenceBundle Extension 에서 네비게이션의 뒤로가기 버튼을 누를 경우
-(void)setRootController:(id)controller; 메소드를 호출하게 된다.
따라서  LAEventSettingsController 를 상속받는 새로운 클래스를 만들고 -(void)setRootController:(id)controller; 메소드를 만들어 두자..

수정된듯...


======================================================

다음은 Activator Listener 직접 호출. Activator 에다가 이벤트를 등록하지 않고 직접적으로 호출하는 방법이며, Listener 이름만 알고 있으면 된다.
(참고로 Activator 는 리스프링 직후 트윅들이 Activator 에 이벤트를 등록하면서 넘겨주는 delegate 를 가지고 있다가  activator:receiveEvent:forListenerName: 메소드를 호출해주는, 싱글톤 방법을 사용한다.)

역시나 LibActivator 소스에서 가져오는 libactivator.h 를 임포트 해주고
아래와 같이 해주면 된다.
 

더보기

event 는 굳이 안만들고 msgSend 에서 event 대신 nil 값을 넣어줘도 크게 상관은 없다...ㅎㅎ



저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by iolate
LibActivator Setting Saving Path :
/var/mobile/Library/Caches/libactivator.plist
(휘바골드 님 수정 요청 감사합니다~ ㅎㅎ)

복원 후 Activator 설정을 다시 해주기 귀찮다면 저 파일을 백업해 놓자.
권한은 mobile/mobile 666 
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by iolate
뭐 간단한 몇몇 가지는 libactivator.h 를 import 하는 것으로 사용이 가능하지만(뭐 THEOS 에 들어있는 헤더는 몇가지가 빠진거라서 제대로 쓰려면 Activator 오픈소스에서 가져와야 한다)

libactivator.dylib 을 링크 해줘야만 작동되는 기능들도 있다. 

애초에 XCode 쓸때도 플래그는 잘 모른다고 무시하고  다른 프레임워크 처럼 Link Binary 만 해줘도 잘 됬었는데
THEOS 에서는 어떻게 해야할지 모르겠더라;;ㅠㅠㅠ


해결법은
$THEOS/lib/ 에 libactivator.dylib 을 복사해 넣은 뒤

Makefile 에
[BUNDLE NAME]_LDFLAGS = -lactivator 
를 추가해주면 된다. 
저작자 표시 비영리
신고
Posted by iolate
I can easily find a way for adding actions in activator.
( http://iphonedevwiki.net/index.php/Libactivator

This is the way to add event (like shake device..) for activator on iDevice.

First, You need libactivator.h
If you installed THEOS, you can find this. But that does not have interface for adding event.
So you need get libactivator.h from Ryan Petrich's github(Click Here).

Next, Add these code on your project.

Click ↓ (From source of libactivator - Link )

더보기

 
Then, when you call init, you event is added to activator.
I called init from Mobile Substrate Extension(.dylib) like this

Click ↓

더보기




You can called your event like this.
Click ↓(From source of libactivator - Link )

더보기




Thank you for reading my terrible English..TT

If you cannot understand this, you can find a lot of information here

https://github.com/rpetrich/libactivator  :  source of libactivator
 - LADefaultEventDataSource.m
: Add Event
 - Events.m
: Call Event
 - libactivator-private.h
: Interface of aboves

 - libactivator.h
 - libactivator.m



아.. 누구 저의 X같은 영어 교정해주실 천사 같으신 분 없을까요..?ㅠ 
저작자 표시 비영리
신고
Posted by iolate
음... MobileSubstration Extension 을 동적라이브러리로 불러도 되는건가..? 뭐 일단 이 문제는 패쓰하고;;

이것 역시 유입경로 보고 하는 포스팅! ㅋ


LibActivator 와 연동하기 위해선 우선
libactivator.h (THEOS 를 사용하기 위해 헤더들을 받았다면 그안에 있다.[<LibActivator/libactivator.h>] 없다면... 구글에 검색하면 아마 나올듯..?)
그리고 libactivator.dylib . 어디서 가져왔는지 기억이 안난다;; 걍 두개다 첨부할께요..ㅠ


뭐.. 별다른 문제 없겠지...?

위 두개를 받아서 프로젝트에 추가한다. 
dylib 파일의 경우엔 Link Binary With Libraries 에 추가해야 되는데 걍 집어넣으면 됬던지 기억은 잘 안난다.
아 몰라 자세한건 알아서해 


libactivator.h 임포트 해주고 

+ (void)load

{

[[LAActivator sharedInstance] registerListener:[self new] forName:@"%%%%%"];

} 

- (void)activator:(LAActivator *)activator receiveEvent:(LAEvent *)event

{

if ( 앱이 활성화 중이라면 ) {


return;

}else{
 

        //callShowWindow();

        [event setHandled:YES]; // To prevent the default OS implementation

    }

}


- (void)activator:(LAActivator *)activator abortEvent:(LAEvent *)event

{

// Dismiss your plugin

    

}
 

를 추가해준다. %%%%%는 알아서 수정해 둘것. 앱이름이나 BundleIdentifier 등으로 해두면 된다. 크게 상관없으니 중복만 안되도록 해줄것. 참고로 나같이 프로그래밍 잘 모르면서 덤비는 사람을 위해 적자면, 따로 load 를 호출안해줘도 된다.
앱 활성화 확인 방법은 걍 간단하게 BOOL 변수 하나 만들어서 사용해도 잘되더라.


그다음 /Library/Activator/Listeners/%%%%%/info.plist 를 만든다. %%%%%는 당연히 알겠지만 위에서 지정한 것과 똑같이 하면 된다. info.plist 에서 String 타입의 Description과 title 키를 만들어 알아서 값 넣어주고 아이콘도 있으면 지정해주면 뜬다. 
 
자. 이제 Activator 에서 보면 내가 지정한대로 뜰것이다.
호출되는지 까지 확인하면 Activator 와 사용할 준비는 끝!
 


제대로 된걸 보려면
http://iphonedevwiki.net/index.php/Libactivator 

저작자 표시 비영리
신고
Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함