본문 바로가기

Programming/iOS

[ios 강좌] ios 푸시 알림 2부 - 클라이언트 개발

반응형
이번 강좌에서는 ios 의 푸시 알림 2부의 클라이언트 개발을 알아보도록 하겠습니다.

ios 푸시 알림 1부 - 개발자 계정 세팅
ios 푸시 알림 2부 - 클라이언트 개발
ios 푸시 알림 3부 - APN 테스트

========================================================================================

1. Xcode를 열고 푸시 세팅을 해줍니다.



========================================================================================
2. AppDelegate.m 파일을 열고, 푸시 코드를 등록합니다.


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
-> 앱이 시작될때

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
-> 푸시 서버에 토큰을 등록했을 때

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 
-> 푸시 서버에 등록을 못했을 때

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler 
-> 푸시 알림을 받았을때 



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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    if (launchOptions && [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) {
        // 1번 상태에서 push 수신
        
        }

    if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
    {
        // iOS 8 Notifications
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

        [application registerForRemoteNotifications];
    }
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken: %@", deviceToken);
    
    
}


- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"didFailToRegisterForRemoteNotificationsWithError: %@", error);
}


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler NS_AVAILABLE_IOS(7_0)
{

    completionHandler(UIBackgroundFetchResultNoData);

    if (application.applicationState == UIApplicationStateActive) {
        // 앱이 foreground( 실행 중 ) 상태에서 push를 수신함
        

    }
    else {
        // 앱이 background 상태에서 push를 수신함

        
    }


}


========================================================================================

3. 구동 테스트
원하는 부분의 아래의 코드를 넣으면, 아래 처럼 푸시알림 허용 팝업창을 볼수 있습니다.

[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadgecategories:nil]];

        [application registerForRemoteNotifications];
-> 푸시 알림 설정 창을 요청할때