아이폰어플개발정보2010. 10. 29. 04:34
[아이폰 앱 개발] 아이폰 어플개발할때 폰트 세팅법

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
// create the parent view that will hold header Label
UIView* customView = [[UIView alloc] initWithFrame:CGRectMake(10.0, 0.0, 300.0, 44.0)];

// create the button object
UILabel * headerLabel = [[UILabel alloc] initWithFrame:CGRectZero];
headerLabel.backgroundColor = [UIColor clearColor];
headerLabel.opaque = NO;
headerLabel.textColor = [UIColor blackColor];
headerLabel.highlightedTextColor = [UIColor whiteColor];
headerLabel.font = [UIFont boldSystemFontOfSize:20];
headerLabel.frame = CGRectMake(10.0, 0.0, 300.0, 44.0);

// If you want to align the header text as centered
// headerLabel.frame = CGRectMake(150.0, 0.0, 300.0, 44.0);

headerLabel.text = // i.e. array element
[customView addSubview:headerLabel];

return customView;
}

Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 28. 23:05
[아이폰 앱 개발] 완성된 아이폰 어플 앱스토어에 올리는 절차
안녕하세요 문씨입니다.
저번에 줄줄이 쓸때 올릴만한 완성된 어플이 없어서 그만 빼먹었었네요;;;
어플을 스토어로 올리기위해서는 크게 두군데에서 준비를 해야합니다. 
하나는 담당 사이트인 아이튠스 코넥트에서 올릴 어플의 정보를 설정하는것이고
다음은 올릴 어플을 준비하는 것입니다.
 먼저 어플을 준비해보겠습니다.
키체인에 배포용 키가 설치되어 있어야 합니다 (http://cafe.naver.com/mcbugi/8953)
먼저 개발자 포탈 사이트에서 배포용 프로비션 프로파일을 만듭니다.
물론 미리 App ID는 만들어 둡니다. (http://cafe.naver.com/mcbugi/8964)
포탈 메뉴에서 Provisioning 메뉴로 들어가서 Distribution 탭으로 들어갑니다.
New Profile을 클릭해서 새로 하나 만듭니다.
올리는 어플 하나당 프로파일이 하나씩 필요합니다.
Profile Name에 어플 이름을 적고
AppID 에서 만든 앱 아이디를 선택합니다
그리고 Submit을 클릭해서 완료합니다
잠시 기다렸다가 새로고침해서 만들어진 프로파일을 다운로드 합니다.
다운 받은 프로파일을 실행해서 설치합니다.
여기까지는 애드훅 설치법과 비슷합니다. (http://cafe.naver.com/mcbugi/9042)
이제 xCode에서 배포할 어플 프로젝트를 엽니다.
info.plist 파일에서 Bundle identifier항목에 만든 AppID를 동일하게 씁니다.
새파일 만들기로 Entitlements.plist파일을 만듭니다.
Adhoc에서는 내용에서 채크를 뺏지만 여기서는 그냥 놔둡니다.
이번에는 프로젝트 설정으로 갑니다. (프로젝트 부분 더블 클릭)
Configurations탭에서 Release를 선택한후 하단에 Duplicate를 클릭합니다.
그리고 새로 만들어진 것을 Distribution으로 이름을 바꿔줍니다
Build탭으로 갑니다
Configuration항목을 Distribution으로 바꾼뒤 Code Signing부분을 봅니다
먼저 Code Signing Entitlements를 수정합니다
아까 만든 파일명을 그대로 적어줍니다
 
Code Signing Identity와 바로 아래 두곳을 맞는 AppID에 찾아서 선택합니다
보통 iPhone Distribution: 이름 및 회사명으로 되어 있습니다
빌드 메뉴에서 Device로 선택하고 버전을 맞춘뒤 항목을 Distribution으로 맞춥니다
CMD + B나 빌드 메뉴에 빌드로 빌드해줍니다.
그럼 Products에 어플.app가 있는것을 볼수 있습니다
항목을 오른쪽 클릭해서 나오는 메뉴에서 Reveal in Finder명령으로 해당 파일의 위치를 엽니다
파인더에서 파일이 두개가 보입니다.
dSYM은 빼고  해당 어플만 압축합니다..
여기까지 파일 준비는 되었습니다
이제는 아이튠스 코넥트에서 올릴 어플 정보를 씁니다
아이튠스 코넥트로 들어갑니다 (https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa)
Manage Your Applications 항목으로 갑니다
 Add New Applicatioin메뉴를 클릭해서 새로 어플 추가를 합니다
어플의 암호화 관련 질문입니다 NO로 하고 다음으로 넘어갑니다
Application Name: 올릴 어플의 이름입니다.
Application Description: 설명을 적습니다
Device Requirements: 지원 기기입니다. iPhone and iPod Touch가 모든 기기 지원이라 보면 됩니다.
다음 두개는 카테고리 선택입니다. 
Copyright은 적당히 저작권 정보를 씁니다 예) smoon.kr 2009 등등;;;
Version Number: 버전 번호 입니다 보통 1.0
SKU Number: 자세히는 모르지만 지신이 구별할 어플 실별 코드라고 보면 됩니다. 전 보통 AppID를 사용합니다
Keywords 검색어 입니다 (전엔 없었는데;;;)
Application URL: 어플 소개 홈피 주소입니다.
Support URL: AS를 위한 사이트 주소입니다
다음은 연락처 이멜 주소입니다
Demo Account: 어플의 종류에 따라서 로그인 인증이 필요한 것도 있습니다.  이럴경우 미리 만들어서 적어줘야 합니다. 심사의원이 따로 가입까지는 안합니다;;; 게임의 경우 테스트용도의 아이디를 대줘야 합니다.
다음  하단의 Continue를 클릭해서 넘어갑니다
등급 설정입니다. 거의 게임이나 폭력성 어플에 해당합니다
적당히 판단하에 선택합니다
다음으로 넘어가면 파일 올리기입니다
Application에 아까 만들어둔 압축파일을 올립니다. 올리는데 시간이 좀 걸리고
다 올라가면 검사도 하기 때문에 에러가 날경우 어딘가 인증 작업을 잘못 했거나 아이콘이 규격에 안맞거나 등등 
원인을 메세지를 알려줍니다.
Large 512...는 대형 아이콘 파일입니다.  JPEG형식에 크기 512 픽셀 정사각형의 이미지를 준비해서 올립니다.
앱스토어에 뜨는 아이콘은 이 파일입니다. 실제 앱 아이콘과 전혀 틀리면 리젝의 원인이 되기도 합니다.
Primary Screenshot 기본 스샷입니다 JPEG로 320 x 480크기만 됩니다
나머지는 추가 스샷으로 기본 스샷과 같은 조건이면 최대 4개 까지 올릴수 있습니다
다 올리면 다음으로 넘어갑니다
가격 설정입니다.
원하는 가격을 설정후 앱스토어에 올라갈 날자를 정합니다 보통 일주일에서 10일 정도 걸리 대충 그 이후로 정합니다.
언어 선택입니다. 그냥 넘어갑니다.
(너무 대충;;;)
마지막으로 적은 정보를 확인뒤 Submit Application을 클릭해서 완료 합니다
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 28. 17:55
[아이폰 앱 개발] 아이폰 앱 리뷰 사이트 100개 모음
 

Researching Your Competition

Lets face it. We all have great App ideas that we think will make us rich overnight… only to find out a few days later that its already been done. And when this happens – its not very encouraging. However, the other side of the coin is that a simple obvious idea may not have been developed as yet. So there still may be potential. But how do you find out quickly if your idea is already a case of the “been-there done-that” situation ?

Lets face it. We all have great App ideas that we think will make us rich overnight… only to find out a few days later that its already been done. And when this happens – its not very encouraging. However, the other side of the coin is that a simple obvious idea may not have been developed as yet. So there still may be potential. But how do you find out quickly if your idea is already a case of the “been-there done-that” situation ?

Answer: You need to do online research on the various iPhone apps resource sites. Below are the top areas you need to focus on and their respective sites. They will help you get your homework / research done comprehensively and quickly.

App Directories

New App directories keep springing up all over the web. These are a select few. They will help you search for competing Apps not just in one country at a time, like on the App store, but across all continents at the same time.

http://appolicious.com

http://appshoppper.com

http://apptism.com

http://freshapps.com

http://macworld.com/appguide/

http://yappler.com

http://appsafari.com

http://igoapps.com

http://versiontracker.com/iphone/

http://m.macupdate.com/iphone.php

Sites That Give App Rankings

These will help you guage how well other Apps are doing. What is their position on the App Store chars? Do they list on top of specific categories only or in the general category also? Do they perform better is some countries?

http://mobclix.com/appstore/

http://magicjungle.com/majicrank.html

http://applyzer.com

http://148apps.biz/app-store-metrics/

http://topappcharts.com

http://yappler.com/Apple-iPhone-App-Store-Stats/

Getting Performance Statistics Your App

Here are a few App analytics services that help you track rankings and perofrmance of your own Apps.

http://flurry.com

http://AppFigures.com

http://AppViz.com

http://www.heartbeatapp.com/

App Review Sites

You must read up on what others are saying about your competitors products online. Get to know the strong points and identify the weak points to take advantage of and implement correctly within your own App. Here are the top App review sites -

http://appvee.com

http://appcraver.com

http://148apps.com

http://toucharcade.com

http://appstorehq.com

http://appmodo.com

http://iphoneappreviews.net

http://iphoneapplicationlist.com

http://theiphoneappreview.com

http://whatsoniphone.com

http://iphoneapppodcast.com

http://iphone.iusethis.com

http://iphoneappratings.org

http://appchatter.com

http://touchmyapps.com

Other sites that have review sections within them -

http://macworld.com/appguide/

http://iphonealley.com/reviews/apps/

http://arstechnica.com/apple/iphone/apps.ars

http://appletel.com/apple/archives/category/iphone-sdk/

http://tuaw.com/category/app-review/

http://apptism.com/reviews/

http://appadvice.com/appnn/category/reviews/

This is list is a small extract from Dave Wooldridge’s fantastic book The Business of iPhone App Development, that was reviewed by me earlier at the link. If you are serious about making money with your iPhone App, this is an 

 

absolute must read.

 

http://edumobile.org/iphone/iphone-business/researching-your-competition/

Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 14. 00:09
[아이폰 앱 개발] 아이폰 어플에서 RSS 읽는 방법

RSS를 읽어 오는 간단한 리더기를 만들어 보겠습니다. 맥에서는 NSXMLDocument란 편리한 클래스가 있지만 아이폰 SDK에는 포함되어 있지 않습니다. 그렇기 때문에 NSXMLParser를 사용해서 RSS xml을 읽어오는 간단한 샘플을 만들어 보겠습니다.

인터넷을 통해 데이터를 가져오는 부분은 이전  "NSURLConnection으로 웹페이지 내용 가져오기"란 포스팅을 참고 하시기 바랍니다. 여기서는 파싱하는 부분만 간단히 살펴보겠습니다. 


1. NSXMLParser 생성
xml 데이터 파싱은 네트워크로 데이터 수신이 완료된 후 불려지는 connectionDidFinishLoading 메소드에서 아래와 같이 처리합니다. 

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:receiveData];

[parser setDelegate:self];
[parser parse];
[parser release];


NSXMLParser 오브젝트를 수신된 데이터가 저장된 NSData 타입의 receiveData를 인자로 초기화를 합니다. setDelegate 메소드로 현재 오브젝트를 NSXMLParser의 딜리케이트로 지정합니다. 지정된 오브젝트는 요소별로 파싱의 시작/종료와 파싱된 스트링을 받을 수 있는 메소드를 구현해야 합니다. 

parse 메소드로 파싱이 시작됩니다. 파싱은 자동으로 처리되지 않으며, 각 단계별로 딜리게이트된 메소드를 구현하여 필요와 형식에 맞게 직접 처리해야 합니다.

2. Delegate 메소드 구현
NSXMLParser에는 많은 딜리게이트 메소드가 있지만 가장 중요하고 거의 반드시 구현해야될 메소드는 parser:didStartElement, parser:foundCharacters, parser:didEndElement입니다. 

parser:didStartElement로 한 요소의 파싱이 시작됨을 알수 있습니다. parser:foundCharacters로 해당 문자열들이 넘어 옵니다. 토큰 단위로 넘어 오기 때문에 넘어 오는 문자열들을 계속 저장해야 합니다. parser:didEndElement가 실행되면 비로소 한 요소의 파싱이 끝난 것을 알 수 있습니다. 이 메소드에서 해당 요소에 따른 필요한 처리를 합니다. 

1) 시작 메소드 구현

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
    if ([elementName isEqualToString:@"item"]) 
        elementType = etItem;
    
    [xmlValue setString:@""];
}


두번째 인자인 elementName으로 해당요소의 이름이 전달됩니다. 세번째와 네번째 인자는 네임스페이스와 관련된 uri와 전체이름이 전달됩니다. 만약 해당 xml이 네임스페이스를 사용한다면 이전에 [parser setShouldProcessNamespaces:YES];로 네임스페이스를 처리하도록 설정해야 합니다. NSXMLParser의 shouldProcessANamespace의 기본값은 NO 입니다.

마지막 인자인 attributeDict에는 해당 요소의 속성들이 전달됩니다. 만약 와 같이 되어 있다면 attributeDict 딕셔너리에 key가 'lang', value가 'ko'로 저장되어 전달됩니다.

여기서는 다른 인자들은 무시하고 item이란 이름의 요소가 시작될때 부터 데이터들을 저장하도록 요소이름이 item인지만 확인합니다. 그리고 xmlValue에 새로운 데이터를 저장하기 위해 이전에 저장된 값들을 초기화합니다. 

2) 데이터 저장 메소드 구현

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    if (elementType == etItem) {
        [xmlValue appendString:string];
    }
}

토큰별로 넘어오는 문자열을 xmlValue에 저장합니다.

3) 종료 메소드 구현

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if (elementType != etItem)
        return;

    if ([elementName isEqualToString:@"title"]) {
        [currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
    } else if ([elementName isEqualToString:@"link"]) {
        [currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
    } else if ([elementName isEqualToString:@"description"]) {
        [currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
    } else if ([elementName isEqualToString:@"category"]) {
        [currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
    } else if ([elementName isEqualToString:@"pubDate"]) {
        [currectItem setValue:[NSString stringWithString:xmlValue] forKey:elementName];
    } else if ([elementName isEqualToString:@"item"]) {
        [xmlParseData addObject:[NSDictionary dictionaryWithDictionary:currectItem]];
    }
}


한 요소가 끝날때 호출됩니다. 여기서는 RSS의 title, link, description, category, pubData 항목들만 currentItem 딕셔너리에 저장합니다. 한 포스팅의 마지막 요소인 일 경우에는 xmlParseData에 현재 딕셔너리를 추가합니다.

3. 테이블뷰 출력

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [xmlParseData count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    
    NSDictionary *dict = [xmlParseData objectAtIndex:indexPath.row];
    [[cell textLabel] setText:[dict objectForKey:@"title"]];
    
    return cell;
}


여기서 테이블뷰는 아무 동작을 하지않으며 xmlParseData에 저장된 해당 title만 출력합니다. 빌드 후 실행하면 아래와 같이 해당 RSS의 제목이 출력되는 것을 확인할 수 있습니다.

 

Posted by 오늘마감

댓글을 달아 주세요

XCODE2010. 10. 12. 13:06
[아이폰 앱 개발] LightTheCandle 아이폰 어플 만들기
 
 
 
 
IBOutlet을 인스턴스 변수의 타입 앞에 붙여주면 인터페이스 빌더에 노출되고 적당한 UI요소로 연결을 할 수 있다. 각 인스턴스 변수를 property화 하는데, 이들은 IBOutlet으로 지정되어서 인터페이스 빌더에서 적당한 UI요소에 연결될 것이다. 즉 NIB파일이 로드될때 자동으로 생성되는 인스턴스들이다.
 
메소드의 리턴 타입의 void대신 IBAction을 넣어주고, 매게변수 (id)sender로 받도록하면 인터페이스 빌더에 노출되어 특정 UI요소가 터치될 때 실행되는 액션 메소드로 사용될 수 있다.
 
> 뷰 화면에 보이게 설정
 
> Switch에 액션 설정
 
> 리소스 추가하기
 
 
 
 
candle의 상태를 남는 상태변수와 이미지의 변수를 만듬.
 

NSBundle클래스 : 프로그램 안에서 사용되는 코드와 리소스 등을 모아놓은 곳(애플리케이션을 위한 폴더라고 생각~)
 
[NSBundle mainBundle]은 현재 애플리케이션의 실행 파일이 있는 번들을 리턴한다.
-pathForResource:ofType:에 파일의 이름과 확장자를 넘기면 현재 실행되고 있는 애플리케이션의 폴더에서 해당 이름의 리소스가 있는지를 찾고 있으면 그 경로를 넘긴다.
 
넘어온 경로를 이용해 UIImage를 초기화한다.
 
-setImage:메소드를 통해 UIImage를 넘기면 지정된 이미지를 뿌릴수 있다.
 
UISwitch에는 on이라는 프라퍼티가 있으며 BOOL값을 가진다.
 
UILabel의 인스턴스인 candleStateLabel의 text프라퍼티에 "현재 촛불의 꺼져 있으니 켜라"
라는 메시지를 넣어준다.
 
 
LightTheCandleAppDelegate가 dealloc될때 alloc했던 인스턴스를 메모스에서 릴리즈 해준다.
 
 
 
Posted by 오늘마감

댓글을 달아 주세요

아이폰기본사용2010. 10. 12. 12:58
아이폰 앱 리뷰 사이트 100개 모음
 

Researching Your Competition

Lets face it. We all have great App ideas that we think will make us rich overnight… only to find out a few days later that its already been done. And when this happens – its not very encouraging. However, the other side of the coin is that a simple obvious idea may not have been developed as yet. So there still may be potential. But how do you find out quickly if your idea is already a case of the “been-there done-that” situation ?

Lets face it. We all have great App ideas that we think will make us rich overnight… only to find out a few days later that its already been done. And when this happens – its not very encouraging. However, the other side of the coin is that a simple obvious idea may not have been developed as yet. So there still may be potential. But how do you find out quickly if your idea is already a case of the “been-there done-that” situation ?

Answer: You need to do online research on the various iPhone apps resource sites. Below are the top areas you need to focus on and their respective sites. They will help you get your homework / research done comprehensively and quickly.

App Directories

New App directories keep springing up all over the web. These are a select few. They will help you search for competing Apps not just in one country at a time, like on the App store, but across all continents at the same time.

http://appolicious.com

http://appshoppper.com

http://apptism.com

http://freshapps.com

http://macworld.com/appguide/

http://yappler.com

http://appsafari.com

http://igoapps.com

http://versiontracker.com/iphone/

http://m.macupdate.com/iphone.php

Sites That Give App Rankings

These will help you guage how well other Apps are doing. What is their position on the App Store chars? Do they list on top of specific categories only or in the general category also? Do they perform better is some countries?

http://mobclix.com/appstore/

http://magicjungle.com/majicrank.html

http://applyzer.com

http://148apps.biz/app-store-metrics/

http://topappcharts.com

http://yappler.com/Apple-iPhone-App-Store-Stats/

Getting Performance Statistics Your App

Here are a few App analytics services that help you track rankings and perofrmance of your own Apps.

http://flurry.com

http://AppFigures.com

http://AppViz.com

http://www.heartbeatapp.com/

App Review Sites

You must read up on what others are saying about your competitors products online. Get to know the strong points and identify the weak points to take advantage of and implement correctly within your own App. Here are the top App review sites -

http://appvee.com

http://appcraver.com

http://148apps.com

http://toucharcade.com

http://appstorehq.com

http://appmodo.com

http://iphoneappreviews.net

http://iphoneapplicationlist.com

http://theiphoneappreview.com

http://whatsoniphone.com

http://iphoneapppodcast.com

http://iphone.iusethis.com

http://iphoneappratings.org

http://appchatter.com

http://touchmyapps.com

Other sites that have review sections within them -

http://macworld.com/appguide/

http://iphonealley.com/reviews/apps/

http://arstechnica.com/apple/iphone/apps.ars

http://appletel.com/apple/archives/category/iphone-sdk/

http://tuaw.com/category/app-review/

http://apptism.com/reviews/

http://appadvice.com/appnn/category/reviews/

This is list is a small extract from Dave Wooldridge’s fantastic book The Business of iPhone App Development, that was reviewed by me earlier at the link. If you are serious about making money with your iPhone App, this is an 

 

absolute must read.

 

http://edumobile.org/iphone/iphone-business/researching-your-competition/



출처 : http://blog.naver.com/PostList.nhn?blogId=philipousys¤tPage=57
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 10. 12. 04:03
아이폰 어플개발할때 Wifi,3G연결 체크하는 소스

Usage is really simple:

  1. if ([Connection isConnected]) {  ...  }  
  2. else {  ...  }  

Connection.m file:

  1. //
  2. //  Connection.m
  3. //  iBlog
  4. //
  5. //  Created by Ondrej Rafaj on 12.11.09.
  6. //  Copyright 2009 Home. All rights reserved.
  7. //
  8. #import "Connection.h"
  9. @implementation Connection  
  10. + (BOOL) isConnected {  
  11.     // Create zero addy
  12.     struct sockaddr_in zeroAddress;  
  13.     bzero(&zeroAddress, sizeof(zeroAddress));  
  14.     zeroAddress.sin_len = sizeof(zeroAddress);  
  15.     zeroAddress.sin_family = AF_INET;  
  16.     // Recover reachability flags
  17.     SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);  
  18.     SCNetworkReachabilityFlags flags;  
  19.     BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);  
  20.     CFRelease(defaultRouteReachability);  
  21.     if (!didRetrieveFlags) {  
  22.         NSLog(@"Error. Could not recover network reachability flags");  
  23.         return NO;  
  24.     }  
  25.     BOOL isReachable = flags & kSCNetworkFlagsReachable;  
  26.     BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;  
  27.     BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;  
  28.     NSURL *testURL = [NSURL URLWithString:@"http://www.google.com/"];  
  29.     NSURLRequest *testRequest = [NSURLRequest requestWithURL:testURL  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0];  
  30.     NSURLConnection *testConnection = [[[NSURLConnection alloc] initWithRequest:testRequest delegate:self] autorelease];  
  31.     return ((isReachable && !needsConnection) || nonWiFi) ? (testConnection ? YES : NO) : NO;  
  32. }  
  33. @end  

And this is the header Connection.h file:

  1. //
  2. //  Connection.h
  3. //  iBlog
  4. // 
  5. //  Created by Ondrej Rafaj on 12.11.09.
  6. //  Copyright 2009 Home. All rights reserved.
  7. //
  8. #import 
  9. #import 
  10. #import 
  11. #import 
  12. #import 
  13. @interface Connection : NSObject {  
  14. }  
  15. + (BOOL) isConnected;  
  16. @end  

And don't forget to include all the necessary frameworks ;) ... SystemConfiguration and libz.1.1.3.dylib

Ondrej Rafaj

Independent iPhone developer @ ondrej-rafaj.co.uk

I am available to give you a free quote or start working on your project ... just give me a call or drop a line. Please find all my details on my portfolio site ondrej-rafaj.co.uk

http://www.xprogress.com/post-40-iphone-internet-connection-check-wifi-3g-edge-something-like-reachability-h/

Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 9. 27. 05:23
아이폰 UITextField 키보드 핸들링 소스

iPhone UITextField Tutorial: Handling Keyboard Interactions

This post is written to provide you with the process to get the return button working on the keypad that pops up while filling a text field, the “Background Tap” functionality, and also what to do when the text field hides behind the keypad.

First we make a demo View-based Application for this, say “BackgroundTapForBlog” .
Add a text field to BackgroundTapForBlogViewController.xib, declare it in your BackgroundTapForBlogViewController.h file ,say tfUsername and link them in .xib.

Return Button on KeyPad:

Once you are done with this, add a function “textFieldDoneEditing” to the BackgroundTapForBlogViewController.m file, and do not forget to declare it in the BackgroundTapForBlogViewController.h file. This function gets rid of the keypad once you are done filling in the textfield.

BackgroundTapForBlogViewController.h file -

1 #import
2 @interface BackgroundTapForBlogViewController: UIViewController{
3 UITextField *tfUsername;
4 }
5 @property(nonatomic, retain) IBOutlet UITextField *tfUsername;
6 -(IBAction) textFieldDoneEditing : (id) sender;
7 -(IBAction) backgroundTap:(id) sender;
8 @end

BackgroundTapForBlogViewController.m file -

01 #import "BackgroundTapForBlogViewController.h"
02  
03 @implementation BackgroundTapForBlogViewController
04 @synthesize tfUsername;
05  
06 - (void)viewDidUnload {
07 self.tfUsername = nil;
08 }
09  
10 - (void)dealloc {
11 [tfUsername release];
12 [super dealloc];
13 }
14  
15 -(IBAction) textFieldDoneEditing : (id) sender{
16 [sender resignFirstResponder];
17 }
18  
19 -(IBAction) backgroundTap:(id) sender{
20 [self.tfUsername resignFirstResponder];
21 }
22 @end

You can download the source code from here.

http://www.mobisoftinfotech.com/blog/iphone/iphone-uitextfield-tutorial-handling-keyboard-interactions/http://www.mobisoftinfotech.com/blog/iphone/iphone-uitextfield-tutorial-handling-keyboard-interactions/

Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 9. 19. 01:30
아이폰 어플 , 가속도 센서에 대한 정리

가속 센서를 이용한 시장 리뷰  http://mobizen.pe.kr/836

............................................................................................................................................................................................

아이폰 기기를 포트레이트모드(일반켰을때 모드인듯.)로 정면을 바라보고 있으면 가속도 센서는 -y방향으로 1, 아이폰을 책상 위에 올려두면 -z방향으로 1의 값을 가짐

가속도 센서가 값을 넘겨주는 주기는 우리가 결정가능

최대 1초에 10번~100번가능,

애플리케이션에 가해지는 부하때문에 유틸리티 같은 애플리케이션에서는 20번을 넘지 않도록 함

만약 게임같이 많이 사용하는 경우라도 60번을 넘지않도록 해야함.

>> 가속도 센서의 값을 이용하는 클래스들

1. UIDevice

UIDevice클래스를 이용하면 아이폰 기기에 대해 싱글톤 접근을 할수 있음

(싱클톤 : 해당 어플리케이션 내에서 유일한 하나의 객체임을 보증하기 위한 방법

    - 목적 : 객체를 하나면 만들기 위해

               프로젝트파일에서 모두 공유하기 위해

    - 장점 : 전역변수를 사용하는 것보다 위험성이 적음, 객체가 두번 이상 생성되는

               실수도 자동 방어)

기기 방향의 변경을 알려주는 노티피케이션 제공

( 노티피케이션 : 오브젝트가 멀리 떨어져 있어 서로 알지 못하는 경우 유용하게 사용

   노티피케이션 센터 : 애플리케이션 내에 유일한 오브젝트(싱글톤 객체)

                            오브젝트 내의 어느 곳에서 접근하더라도 동일한 노티피케이션 센터에

                            접근하게 됨.

                            노트피케이션 센터에 자신이 관심을 가지는 메시지가 올라오는지 지켜

                            보는 오브젝트가 있으며 노티피케이션 센터에 메시지를 올리는 오브젝트

                            존재, 특정 메시지가 올라오면 그 메시지에 관심이 있는

                           오브젝트로 메시지가 전달되며 각자 할일 수행)

아래 코딩은 호출을 통해 디바이스의 방향 전환에 대한 노티피케이션을 받겠다고 선언

[[UIDevice currentDevice] beginGeneratingDeviceOrientatonNotifications];

노티피케이션 센터 리턴하는 코딩

[NSNotificationCenter defaultCenter];

노티피케이션 센터에 통지 올리기

AAA라는 이름의 통지 올리기

아래 코딩을 사용하면 노티피케이션 센터에 통지가 올라갈 뿐만 아니라

통지를 받겠다고 등록한 모든 오브젝트에 메시지가 전달

[[NSNotificationCenter defaultCenter[postNotificationName:

@"AAA" object:self userInfo:nil];

object는 노티피케이션에 함께 동봉되는 오브젝트, 오브젝트 안에 self를 넘기는 이유는 노티피케이션을 받는 쪽에서 필요하면 사용할 수 있도록 함.

userInfo는 우리가 임의의 항목을 만들어서 구독받는 오브젝트에 알릴 수 있도록 함.

또한 임의의 데이터를 패키징하는 딕셔너리,

예) 현재 시각값을 가지는 NSDate 오브젝트를 @"nowDate"라는 키와 쌍을 이뤄

딕셔너리에 넣어준 뒤 보내면 노티피케이션을 구독하는 쪽에서 필요에 따라 그 값을 읽어서 사용

할수 있음.

노티피케이션 센터에 자기 자신을 관찰자로 등록하는 내용

AAA라는 이름의 통지가 올라오면 내가 -addBBB:라는 메소드를 실행시키겠다는 의미

[[NSNotificationCenter dafaultCenter] addObserver:self

selector:@selector(addBBB:) name:@"AAA" object:nil];

UIDevice에서 사용하는 노티피케이션 발행

UIDeviceOrientationDidChangNotification - 디바이스의 현재 방향

(기기의 방향이 바뀌었다는 통지가 날라오면 UIDevice클래스로부터 orientation

프라퍼티를 읽어서 방향 변화에 대한 처리를 함)

UIDeviceBatteryLevelDidChangeNotification - 배터리의 레벨이 변함

디바이스 방향이 더 이상 필요 없을 경우엔

[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];

호출을 통해 가속도 센서의 이용을 끝내야함.

(가속도 센서를 전원을 많이 소모하는 장치임)

2. UIApplication

애플리케이션에 대한 싱글톤 접근 가능

스테이터스 바(status bar)의 방향을 설정 할 수 있는

statusBarOrientation 프라퍼티 제공

3. UIViewController

이 클래스는 interfaceOrientation프라퍼티를 가지고 있으며

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

메소드를 오버라이드해서 뷰 컨트롤러가 관리하는 뷰가 디바이스의 변화에 대응할지를 YEs나

NO값으로 리턴함

4. UIResponder

터치이벤트가 시작되는 클래스

motion이벤트 : 아이폰의 움직임에 대해 이벤트를 발생시키는 모션.

                    아이폰 3.0에서는 쉐이크밖에 제공하고 있지 않음.

5. UIAcceleometer

가속도 센서에 대한 싱글톤 접근 제공

 UIAccelerometer* theAccel = [UIAccelerometer sharedAccelerometer];

theAccel.updateInterval = 1/30;

theAccel.delegate = self;

+sharedAccelerometer 메소드로 가속도 센서에 접근

1초에 30번 가속도 센서의 값을 전달받겠다고 설정

theAccel의 델리게이트를 self로 지정하면 델리게이트 프로토콜 메소드를 구현해야 함.

 -(void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration

{

   // 이벤트 데이터 얻어온다.

   UIAccelerationValue x,y,z;

   x = acceleration.x;

   y = acceleration.y;

   z = acceleration.z;

   // 데이터 처리 코드가 이어져야 한다.

}

UIAccelerameter 오브젝트는 싱글톤이므로 유일한 객체,

따라서 델리게이트메소드 역시 하나만 지정

따라서 하나의 애플리케이션에는 하나의 델리게이트 메소드 역시 하나.

UIAcclerationValue의 값은 double이며, 1이 1g(중력값)을 나타냄

- 하이패스 필터(high pass filter)

 아이폰이 항상 받고 있는 중력값을 필터링해서 없애버리고 움직임만을 얻어내는 기법.

아이폰이 중력에 대해 어떤 상태로 있든 상관없이 저지해있기만 하면

x,y,z값은 0으로 설정하고 움직이는 방향에 대한 값만을 제공하는 것.

  UIAccelerationValue acceleration[3];

 UIAcclerationValue history[kHistorySize][3];

 // 하이패스 필터 기능을 켰는지 점검

 if(filteringIsEnable){

     accleraion[0] = x*kFilteringFactor + acceleration[0]*(1.0-                            kFilteringFactor);

     history[nextIndex][0] = x-accleration[0];

    accleraion[1] = x*kFilteringFactor + acceleration[1]*(1.0-                            kFilteringFactor);

     history[nextIndex][1] = x-accleration[1];

    accleraion[2] = x*kFilteringFactor + acceleration[2]*(1.0-                          kFilteringFactor);

     history[nextIndex][2] = x-accleration[2];

  } else {

     history[nextIndex][0] = x;

     history[nextIndex][1]  = y;

     history[nextIndex][2] = z;

  }

 kFileteringFactor는 다음과 같이 정의되어 있음

#define kFilteringFactor 0.1

그래프는 histroy배열에 값에 의해 그려지며 history는 최근 3개의 x,y,z값을 가진다.

acceleration배열은 현재 가속도 센서의  x값을 0.1비중으로

이전 x값을 0.9비중으로 각축 방향의 값을 구한다.

그리고 그 값을 다시 현재 가속도 센서의 x값에서 뺀 값을 이용해 움직임에 대한 수치만 history에 넣어서 그래프를 그리는데 사용

-로우패스 필터

미세한 움직임을 필터링하고 중력값을 주로 이용하기 위해 가속도 센서의 값을 가공

즉, 가속센서의 그래프에서 많이 튀는것은 하이패스필터로 잡고

작게 튀는것은 로우패스 필터로 잡는다.

  UIAccelerationValue accel[3];

 accel[0] = acceleration.x * kFilteringFactor + accel[0] * (1.0 -                      kFilteringFactor);

accel[1] = acceleration.x * kFilteringFactor + accel[1] * (1.0 -                      kFilteringFactor);

accel[2] = acceleration.x * kFilteringFactor + accel[2] * (1.0 -                      kFilteringFactor);

kFileteringFactor는 다음과 같이 정의되어 있음

#define kFilteringFactor 0.1

현재 가속도 센서의  x값을 0.1비중으로

이전 x값을 0.9비중으로 각축 방향의 값을 구한다.



출처 : http://blog.naver.com/PostList.nhn?blogId=heajin722¤tPage=30
Posted by 오늘마감

댓글을 달아 주세요

아이폰어플개발정보2010. 9. 19. 01:29
아이폰 어플, text파일 생성 및 내용 저장하는 방법

TEXT파일 생성 & 파일에 내용 저장

NSArray* paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES );
NSString* documentsDirectory = [paths objectAtIndex:0];

NSString* fullFileName = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"log.txt"];

 const char* szFilePath = [fullFileName UTF8String];

 FILE* fp = fopen( szFilePath, "w" );
 if(fp == nil)     NSLog(@"do not exist log file");
 else

{

   NSString *tableAtt = @"haejinLee";

   // NSString을 char로 바꾸는 작업,

   // 굳이 NSString을 만들지 않아도 되는상황에선 char를 먼저 사용합니다.

   const char* ctableAtt = [tableAtt UTF8String];

   fputs(ctableAtt, fp);

}

아이폰으로 실행시켜 보면

파일이 저장경로는 My Computer에서 Raw File System에서

(저는 i-FunBox에서 확인하였습니다)

//var/mobile/Applications/어플번호/Documents에서 확인하실수 있습니다.

어플번호를 몰라서 당황하시는 분들은

당황하실 필요 없습니다..그냥 자신의 아이폰에 저장되어 있는 어플 (개발 목적으로 넣은어플)

중에 하나..입니다.



출처 : http://blog.naver.com/PostList.nhn?blogId=heajin722¤tPage=27
Posted by 오늘마감

댓글을 달아 주세요