APNs (Apple Push Notification Service) 시리즈 - (3) DeviceToken(UDID) 구하기
from 나에 의한/Development, iPhone 2010/07/22 13:33![]() --------------------------------------------------------------------------------------------------------- 오랜만이네요. 귀찮아서 포스팅을 자꾸 차일피일 미루다가.. 마무리는 지어야겠다는 생각으로.. ㅎㅎ 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를 통해, 푸쉬 노티피케이션을 보내는 과정을 설명해드릴게요.. |







댓글을 달아 주세요