Develop
2013.06.27 16:09

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

Views 15691 Votes 0 Comment 0
Atachment
Attachment '3'
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

애플 푸시 알림 서비스 (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. [link] iOS(아이폰) 개발 관련 ㅋㅋ

    Date2013.04.23 CategoryEtc Byhooni Views21505
    Read More
  2. [js] 파이어폭스(Firefox;F/F)에서 outerHTML 작동하도록 만든 메소드

    Date2013.04.23 CategoryDevelop Byhooni Views16445
    Read More
  3. [java] 스트러츠(Struts) 세팅 ㅋㅋ

    Date2013.04.23 CategoryDevelop Byhooni Views42355
    Read More
  4. [java] 날짜 계산 (Date, SimpleDateFormat)

    Date2013.04.23 CategoryDevelop Byhooni Views11854
    Read More
  5. [js] 인터넷 주소(URL) 인코딩 ㅋㅋ

    Date2013.04.23 CategoryDevelop Byhooni Views11353
    Read More
  6. [js] jQuery 관련 문서 ㅎㅎ

    Date2013.04.23 CategoryDevelop Byhooni Views31225
    Read More
  7. [php] 몽이가 준 ajax 채팅 소스 ㅋㅋ

    Date2013.04.23 CategoryDevelop Byhooni Views36180
    Read More
  8. [js] Text 중 URL 형식을 인식해 단축 URL로 변경

    Date2013.04.23 CategoryDevelop Byhooni Views8709
    Read More
  9. [js] jQuery 관련 사이트 링크 모음

    Date2013.04.23 CategoryDevelop Byhooni Views18241
    Read More
  10. [js] 한글주소(URL) 인코딩(encode, Encoding), 자바스크립트(JavaScript)

    Date2013.04.23 CategoryDevelop Byhooni Views11330
    Read More
  11. URI 인코딩, URL 인코딩

    Date2013.04.23 CategoryDevelop Byhooni Views18847
    Read More
  12. OGNL(Object Graph Navigation Language)

    Date2013.04.23 CategoryDevelop Byhooni Views15729
    Read More
  13. [java] Tomcat/UTF-8 or All 지원 ㅎㅎ

    Date2013.04.23 CategorySystem/OS Byhooni Views16745
    Read More
  14. 이클립스(Eclipse) 유용한 단축키 ㅋㅋ

    Date2013.04.23 CategoryEtc Byhooni Views21765
    Read More
  15. [c] 포인터 학습용 예제 소스 코드

    Date2013.04.23 CategoryDevelop Byhooni Views21031
    Read More
  16. [c#] 정규표현식을 이용한 문자열에서 태그 제거함수

    Date2013.04.23 CategoryDevelop Byhooni Views17809
    Read More
Board Pagination Prev 1 ... 33 34 35 36 37 ... 74 Next
/ 74