사용자 삽입 이미지



---------------------------------------------------------------------------------------------------------

오랜만이네요.
귀찮아서 포스팅을 자꾸 차일피일 미루다가.. 마무리는 지어야겠다는 생각으로.. ㅎㅎ

Apple Developer Connection에 APNs가 정상적으로 등록이 되었다면, 이제 푸쉬메시지를 날려봐야겠죠~?

Developer Connection에 APP IDs 섹션을 가보시면 다음과 같이 변해있을겁니당
사용자 삽입 이미지

개발용으로 푸쉬 노티피케이션을 사용할 수 있다는거에요, 나중에 실제로 릴리즈할때는 밑에 있는 Production 부분에 대한 인증서를 생성함으로서, 푸쉬 노티피케이션을 보낼 수 있습니다.

그럼 이제, 실제로 아이폰 고유의 DeviceToken을 구해서 푸쉬 노티피케이션을 보낼 수 있게 구현을 해야되겠죠..
일단 DeviceToken에 대해서 간단하게 설명을 하자면..

아이튠즈 화면을 보시면, 11자리로 구성된 일련번호라는게 있는데.. 그 항목을 한번 더 클릭하면
식별자(UDID) 라는 40자리의 아이폰 고유의 번호가 나옵니다. 이것을 우리가 직접 구해야 됩니다.

(아래에 사용된 코드는 iOS4 에서 제대로 작동하니까 유의하세요~)

일단, 이 어플리케이션이 푸쉬 노티피케이션을 사용한다고 선언을 해줘야겠죠~?
어플리케이션 구동하자마자 호출해도되고, 원할 때 호출하시면 됩니다.

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];

어플리케이션에 푸쉬 노티피케이션을 활성화 하면, UIApplicationDelegate에서 다음을 호출합니다.

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken ;
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err;

느낌이 오시져? 하나는 정상적으로 등록이 됐을 때, 하나는 등록되지 못 했을 때 입니다.

코드를 살펴 봅시다.

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
    const unsigned *tokenBytes = [devToken bytes];
    apnsDeviceToken = [NSString stringWithFormat:@"%08X%08X%08X%08X%08X%08X%08X%08X",
                       ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
                       ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
                       ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
   
}

뭔가 어렵게 생겼는데, NSData형식의 UDID를 우리가 식별할 수 있게 16진수로 변환하는 과정이에요. 이 과정을 거치면 40자리의 UDID가 apnsDeviceToken에 저장됩니다.

자 이제 이 UDID를 구워먹고 삶아먹으면 되는데요,
앞선 페이지에서도 이야기 했듯이

푸쉬 노티피케이션의 흐름은

우리가 직접 구현한 프로바이더 서버(써드파티)에서 특정한 이벤트(메시지,친구초대,등등...)가 발생하면 애플APNs로 어떤 이쁜 여자의 아이폰으로 푸쉬메시지를 보내달라고 요청을 해야합니다.

그러기 위해선 프로바이더 서버(써드파티)를 구현해야하고, 누구에게 보내야 할지 그 아이폰의 UDID를 저장할 공간을 만들어야 합니다.

보통 푸쉬 노티피케이션을 사용하는 어플리케이션은 회원가입과 같이 서버에 무언가를 등록하는 작업을 거칩니다.
그때 여러분의 UDID정보도 같이 서버로 제공되는것이죠~~ +_+

여튼 위에서 구한 UDID정보는 http를 사용하시던, file을 통해 ftp를 이용하시던.. 여러분이 구현하신 서버로 제공을 하시면 됩니다.

(저 같은 경우엔 HTTP를 통해서 PHP로 구현된 서버페이지에다가 UDID를 저장하고 관리를 합니다.)

다음 포스팅에서는.. 서버에 저장된 UDID를 통해, 푸쉬 노티피케이션을 보내는 과정을 설명해드릴게요..
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/07/22 13:33 2010/07/22 13:33
음...
아이폰 리모컨이 작동을 안 하네요.. 쩝
아이퐁 나오기 전부터 Apple In-Ear이어폰 1세대 쓰다가.. 리퍼 받고 2세대를 사용하고 있었는데

버튼을 수백수천번 눌러도 꿈쩍도 안 해요...

이거 아이폰이 고장났나... 아니면 또 이어폰이 고장난건가.. 하늘도 무심하시지
내 월급은 또 통장을 스쳐가는건가 하며 주룩주룩 내리는 장마비를 보며 원망하고 있었네여

인-이어 리모컨도 두 번 리퍼해주진 않을거고.. 하다가 구글신님께 여쭤봤더니..

..역시 구글신은 불쌍한 중생을 구제해 주시는군요.

선 정리 하는 철사(?)가 필요합니다. (혹자는 빵봉지 감는 철사도 된다고 하네요)
이어폰 꽂는 구멍을 꾹꾹 쑤셔줍시다. 철사를 구부려가며 바닥을 긁어 냅시다.

(내꺼는 죽어도 안나온다고 하셔도, 계속 긁어내십쇼...)

그러면 이렇게 생긴 먼지덩어리가 나옵니다.

사용자 삽입 이미지

흡사.. 예전에 보거스에 나오던 먼지악당이 생각나네요.

이어폰 잘~ 동작합니다. 인이어고, 번들이어폰이고.. 잘 동작합니다~ +_+
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2010/07/16 20:58 2010/07/16 20:58