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

카테고리

분류 전체보기 (175)
Server, Cloud (7)
끄적끄적 (6)
Linux, Ubuntu (26)
개발개발 (46)
Mac, iOS (41)
Embedded (20)
NAS (1)
Web (5)
Network (3)
Review (11)
기타 (9)
비공개글 (0)
Total644,205
Today9
Yesterday92
NSLog 로 중간중간 콘솔로 상태를 찍어보곤 하는데 시뮬레이터에선 디버거가 뜨지만
나같이 개발자 인증을 정식으로 돈주고 하지 않은 경우 디바이스 테스트를 할 수 없으며
XCode3 Code Sign 작 을 하여도 디버거가 뜨지 않는다... 하지만 방법이 있으니,
XCode를 실행하고 상단 메뉴에서 Organizer 를 실행하고
DEVICE - Console 을 선택한다.

NSLog로 출력되는 것이 Warning 으로 볼 수 있게 된다.

아는 사람에게는 너무나 당연하고 간단한 사실;;;ㅠ

-------------
XCode4 에서는 상단 우측에 있는 Organize 버튼을 누르면 된다. 
Posted by iolate
TAG console, NSLog
앞에 썼던 글의 연결이다...
특정 파일에 설치 정보가 기록되기 때문에 거기서 자료를 가져오는 방식..
더보기 클릭!

더보기


저장되는 데이터 키값들 (없는 것도 있고, 여기엔 있는데 실제론 없을 수도 있음.

역시 더보기!

더보기


이거 못찾았으면 하나하나 검색방식으로 구현할뻔;;ㅋㅋㅋㅋ

쨋든, 다행~!ㅎㅎ

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

substrate Extension 과 LibActivator 연동하기  (0) 2011.05.01
Xcode - Device Log 보기  (0) 2011.02.23
BundleIdentifier로 앱 정보 구하기  (4) 2011.02.23
앱 설치 여부 구하기  (0) 2011.02.22
DEBIAN PACKAGING (deb) 만들기 (수정)  (1) 2011.01.30
PreferenceLoader 사용법  (0) 2011.01.30
Posted by iolate
12.8 추가

새 방법은 앱스토어에서 사용가능한 방식입니다.
자세한건 새 글에서 소개..

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

추가, 외국포럼에 보면 운좋게 심사를 통과후, 정상 작동한단 말이 있는것 같긴 하지만
쨋든 심사부터 통과못하는 것같고, 통과하더라도 작동하지 않는 듯...

canOpenURL 을 통해 여부를 확인하는걸 가장 추천하지만 여의치 않을때는....에라 모르겠다..ㅋ

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

앱의 설치 여부를 알수 있는 소스. Bundle ID를 이용하며,
코딩은 이것저것 배려되어 있지만 상당수 제거해버려도 큰 상관이 없다...
원리는 
/var/mobile/Library/Caches/com.apple.mobile.installation.plist
파일에 모든 데이터가 기록되어 있다는 것을 이용.
사실 이것만 알면 아래 소스는 큰 필요가 없다.

코딩하기 귀찮을때 사용하자..ㅋㅋ

// Declaration
BOOL APCheckIfAppInstalled(NSString *bundleIdentifier); // Bundle identifier (eg. com.apple.mobilesafari) used to track apps

// Implementation

BOOL APCheckIfAppInstalled(NSString *bundleIdentifier)
{
	static NSString *const cacheFileName = @"com.apple.mobile.installation.plist";
	NSString *relativeCachePath = [[@"Library" stringByAppendingPathComponent: @"Caches"] stringByAppendingPathComponent: cacheFileName];
	NSDictionary *cacheDict = nil;
	NSString *path = nil;
	// Loop through all possible paths the cache could be in
	for (short i = 0; 1; i++)
	{
	
		switch (i) {
	case 0: // Jailbroken apps will find the cache here; their home directory is /var/mobile
		path = [NSHomeDirectory() stringByAppendingPathComponent: relativeCachePath];
		break;
	case 1: // App Store apps and Simulator will find the cache here; home (/var/mobile/) is 2 directories above sandbox folder
		path = [[NSHomeDirectory() stringByAppendingPathComponent: @"../.."] stringByAppendingPathComponent: relativeCachePath];
		break;
	case 2: // If the app is anywhere else, default to hardcoded /var/mobile/
		path = [@"/var/mobile" stringByAppendingPathComponent: relativeCachePath];
		break;
	default: // Cache not found (loop not broken)
		return NO;
		break; }
		
		BOOL isDir = NO;
		if ([[NSFileManager defaultManager] fileExistsAtPath: path isDirectory: &isDir] && !isDir) // Ensure that file exists
			cacheDict = [NSDictionary dictionaryWithContentsOfFile: path];
		
		if (cacheDict) // If cache is loaded, then break the loop. If the loop is not "broken," it will return NO later (default: case)
			break;
	}
	
	NSDictionary *system = [cacheDict objectForKey: @"System"]; // First check all system (jailbroken) apps
	if ([system objectForKey: bundleIdentifier]) return YES;
	NSDictionary *user = [cacheDict objectForKey: @"User"]; // Then all the user (App Store /var/mobile/Applications) apps
	if ([user objectForKey: bundleIdentifier]) return YES;
	
	// If nothing returned YES already, we'll return NO now
	return NO;
}
Here is an example of this, assuming that your app is named "yourselfmadeapp" and is an app in the app store. 
Code:
NSArray *bundles2Check = [NSArray arrayWithObjects: @"com.apple.mobilesafari", @"com.yourcompany.yourselfmadeapp", @"com.blahblah.nonexistent", nil];
for (NSString *identifier in bundles2Check)
	if (APCheckIfAppInstalled(identifier))
		NSLog(@"App installed: %@", identifier);
	else
		NSLog(@"App not installed: %@", identifier);


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

Xcode - Device Log 보기  (0) 2011.02.23
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
Posted by iolate

최근에 달린 댓글

최근에 받은 트랙백

글 보관함