Contents

Develop
2013.06.27 16:09

[ios] APNS 클라이언트 구현 (pdf)

조회 수 15687 댓글 0
Atachment
첨부 '3'
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

애플 푸시 알림 서비스 (Apple Push Notification Service)


APNS ?
애플의 푸시 알림 서비스(APNS)는 푸시 알림 기능의 중심이며 아이폰, 아이패드, 아이팟 터치와 같은 장치에 정보를 전송하기 위한 강력하고 고효율적인 서비스입니다.

소프트웨어 개발사 및 개발자가 제작한 응용 프로그램은 새 데이터가 도착하면 데이터를 모니터링 하면서 영 구적 보안 채널을 통해 APNS와 공급자를 연결하여 대상 장치에 알림을 보냅니다.


시스템 구성

1.png

(그림 출처 : apple.com)


개발 방법
1. APNS를 하기 위한 인증서 생성


- iOS Provisioning Portal 사이트에서 App ID를 생성하고 푸시 서비스를 할 App ID를 선택하여 “Enable for Apple push notification service”란에 체크하여 해당 앱이 푸시 서비스를 사용할 수 있도 록 활성화

2.png

- Provisioning 메뉴에서 App ID에 대한 Profile을 생성하고 다운로드
- Profile 을 실행하여 맥 OS의 “키체인 접근” 유틸리티에 APNS용 인증서 등록


2. APNS 와 연동할 푸시 서버용 인증서 생성
- OS의 “키체인 접근” 유틸리티에서 APNS 인증서를 Export하여 저장
- OS 터미널에서 Export 한 인증서 파일(확장자 “.p12”)들을 “.pem” 파일로 변환


$openssl pkcs12 -clcerts -nokeys -out apns-dev-cert.pem -in apns-dev-cert.p12

$openssl pkcs12 -nocerts -out apns-dev-key.pem -in apns-dev-key.p12


생성된 각각의 pem 파일들을 서버에 저장한다


3. 푸시 서버를 서비스에 맞게 수정
PHP : APNS-PHP http://code.google.com/p/apns-php/


4. (클라이언트)에서 푸시 관련 이벤트 처리

단말기가 APNS에 등록후 APNS로 부터 디바이스 토큰을 받았을 때 호출되는 콜백 메서드 (디바이스 토큰을 멤버 변수에 저장해 놓고 적당한 시점에 디바이스 토큰을 푸시 서버로 전송한다.)


- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

        NSLog(@"deviceToken: %@", deviceToken);

        [self.myDeviceToken appendData:deviceToken];

}


APNS에 등록을 시도했으나 실패한 경우 호출되는 콜백 메서드
- (
void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {

        NSLog(@"Registeration error: %@", error);

}



어플이 실행중일 때 알림이 오면 호출되는 메서드
- (
void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{

        NSDictionary *aps = [userInfo valueForKey:@"aps"]; NSLog(@"%@", [aps valueForKey:@"alert"]);

        NSString *alert = [aps valueForKey:@"alert"]; NSString *badge = [aps objectForKey:@"badge"];

        NSLog(@"Received Push Badge: %@", badge);

        NSString *customKey = [aps objectForKey:@"custom_key"];

        NSLog(@"%@", customKey);

        application.applicationIconBadgeNumber = [[aps objectForKey:@"badge"] integerValue];

        if ([customKey isEqualToString:@"ATTEND"]){

                [self.viewController switchTab:0];

        }else if ([customKey isEqualToString:@"NOTIFY"]){

                [self.viewController switchTab:1];

        }

        [SimpleAlertView showSimpleAlert:self TitleText:@"알림" MessageText:alert]; }


어플이 실행중이 아닐때 알림이 올경우

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:

(NSDictionary *)launchOptions

{

        self.myDeviceToken = [NSMutableData data];


        // 어플은 APNS에 등록을 시도하는데, 알림 방식을 지정 (배지, 소리, 경고)

        [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];


        // 배지 개수 재설정

        application.applicationIconBadgeNumber = 0;

        NSDictionary *notification = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

        NSLog(@"%@", [notification valueForKey:@"custom"]); ...




?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
1173 System/OS 해커스랩 깨기.. 후후.. ㅋㅋ file hooni 2013.04.23 18413
1172 Etc 플라스터(Plaster) 수업 내용 secret hooni 2016.05.24 0
1171 Develop 프로그램 문서 관리 (Doxygen) hooni 2013.04.23 16385
1170 Develop 프로그래밍에서 foo, bar 함수의 유래 file hooni 2013.06.25 21247
1169 Develop 프로그래밍 소스 관련 사이트.. hooni 2013.04.23 16485
1168 Develop 페이팔에서 돈 찾기 (Paypal withdraw) file hooni 2014.02.20 11370
1167 Etc 티스토리 테이블 html,css 구문 hooni 2013.11.03 15948
1166 System/OS 콘솔에서 패스워드 걸린 zip 압축하는 명령 hooni 2018.03.02 933
1165 System/OS 컴파일러 수업 자료(교재 : 컴파일러 입문) file hooni 2003.04.23 21966
1164 Develop 캘리포니아 운전면허 족보 file hooni 2017.06.12 730
1163 Etc 캘리포니아 운전면허 문제 file hooni 2017.07.22 972
1162 Develop 최근 논문 자료 (2011/01/03, 만현형한테 보낸거..) secret hooni 2013.04.23 10366
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 98 Next
/ 98