Contents

Develop
2013.06.27 16:09

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

조회 수 15695 댓글 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"]); ...




?

  1. [opengl] 컴퓨터 그래픽스 강의 자료(수업자료)

    Date2003.04.23 CategoryDevelop Byhooni Views20435
    Read More
  2. [android] [번역] 안드로이드 Android Cloud to Device Messaging(C2DM)

    Date2013.04.23 CategoryDevelop Byhooni Views20426
    Read More
  3. [php] substr() 한글 자를 때 깨짐 방지

    Date2014.01.09 CategoryDevelop Byhooni Views20368
    Read More
  4. [ios] UIView에서 상위 UIViewController 가져오기

    Date2013.09.27 CategoryDevelop Byhooni Views20165
    Read More
  5. [c] UTF-8을 EUC-KR로 변환.. (iconv)

    Date2013.04.23 CategoryDevelop Byhooni Views20149
    Read More
  6. [c] AES 알고리즘 (암호화/복호화)

    Date2003.04.23 CategoryDevelop Byhooni Views20047
    Read More
  7. [php] XE 에서 php 구문 사용하기 (XE 템플릿에서)

    Date2013.10.31 CategoryDevelop Byhooni Views19451
    Read More
  8. [js]모바일 웹에서 orientationchange

    Date2013.04.23 CategoryDevelop Byhooni Views19361
    Read More
  9. 모터에 대한 pid 제어.. ㅎㅎ

    Date2013.04.23 CategoryDevelop Byhooni Views18883
    Read More
  10. URI 인코딩, URL 인코딩

    Date2013.04.23 CategoryDevelop Byhooni Views18854
    Read More
  11. [ios] Objective-C에서 형식이 있는 문자열(Format Strings)에 사용할 수 있는 토큰들(Tokens)

    Date2013.04.23 CategoryDevelop Byhooni Views18788
    Read More
  12. [ios] libxml/tree.h file not found

    Date2013.08.08 CategoryDevelop Byhooni Views18711
    Read More
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 71 Next
/ 71