APNS Push 인증서 생성 순서
Bundle Identifier는 프로젝트 생성할 때 똑같이 해줘야 함.
보통 Project에 있는 Bundle Identifier는 com.domainname.* 으로 되어있는데 Push 서비스를 사용하려면 *(wild card)로 되어있으면 토큰키 생성이 안된다.
Domain=NSCocoaErrorDomain Code=3000 "응용 프로그램에 대해 발견된 'aps-environment' 인타이틀먼트 문자열 없음" UserInfo=0x1c5b0d20 {NSLocalizedDescription=응용 프\353\241\234그램에 대해 발견된 'aps-environment' 인타이틀먼트 문자열 없음}
이 에러때문에!!!스트레스!!!가!!!!!ㅠㅠ
순서를 정리해서 말하면 1. AppID 생성 - 생성된 App은 Push Notification이 사용가능한 상태로 안되어있습니다.
- Configure 눌러서 Push Service를 사용가능한 상태로 만들어줍니다. 그냥 설정만 해주면 되는 게 아니라 푸시서버 SSL 인증서를 생성해서 등록해줘야 합니다.
- 보통 개발이나 테스트용으로 하게 되면 Development Push SSL Certificare 인증서로 등록하시면 돼요 Configure로 누르시고
인증서 선택
인증서 인증절차 완료되면
- 생성된 인증서 보이시면 Download 해서 더블 클릭 해서 인증서 등록해 줍니다. (Apple Development iOS Push Service:com.pushTest.pushTest1이라는 인증서가 생긴 걸 확인하실 수 있을 겁니다~ 테스트하는 앱이름을 반드시 pushTest1으로 동일하게 해 주셔야 돼요~)
이제 Project를 생성해서 Push 테스트를 해보겠습니다.
Apple Development iOS Push Service:com.pushTest.pushTest1 <--등록된 인증서와 같은 네이밍 해주셔야 돼요
- Product Name : pushTest1
- Company Identifier : com.pushTest
-생성된 프로젝트에 들어가서 Bundle identifier를 변경해 줍니다.
com.pushTest.${PRODUCT_NAME} 이렇게 되어있는데 com.pushTest.pushTest1으로 바꾸어줍니다.
- 이제 프로젝트 Build Setting에서 인증서 확인해 보시면 Current matches 인증서가 Push 인증서 네임이랑 일치하면 Test준비는 끝난 거예요~ 이걸 잘 몰라서...ㅠㅠ삽질을... 삽질을..ㅠㅠ
이제 AppDelegate.m에 푸시 토큰 받아오는 코드를 작성합니다. @implementation 밑으로 아래 소스 복사해서 쓰시면 돼요~
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// APNS에 장치등록
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
UIRemoteNotificationTypeAlert |
UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound ];
application.applicationIconBadgeNumber = 0;
return YES;
}
//device token - show Log
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"Device Token : %@" ,deviceToken);
}
//에러 발생시 호출
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"dviceToken error : %@", error);
}
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
NSDictionary *aps = [userInfo valueForKey:@"aps"];
NSLog(@"userInfo Alert: %@", [aps valueForKey:@"alert"]);
}
이제 앱실행하고 (시뮬레이터에선 테스트 되지 않아요~ 폰으로 직접하셔야됩니다~)
시작하면 로그창에
Device Token : <337d8022 2e1f9efa 48400f82 45f2aa52 e98984f5 558a11d1 da762dcf a179aaa0>
이렇게 나오면 성공!!!!!
ㅋㅋ
안되거나 궁금하신건 댓글로 달아주세요~~