2015-01-30 16 views
0

나는 푸시 알림을 지원하는 앱을 만들기 위해 trigger.io를 사용하고 있습니다. 이것은 잘 작동합니다. 전체적으로 푸시 알림을 사용 중지하면 앱에서 푸시 알림을 수신하지 않습니다. 사용자가 설정을 통해 내 애플리케이션에 대한 푸시 알림을 사용 또는 사용 중지했는지 확인할 수있는 명령이 trigger.io에 있습니까?사용자가 trigger.io에서 전체적으로 밀어 넣기 알림을 사용할 수 없는지 감지 할 수 있습니까?

답변

0

실제로 iOS에서 푸시 설정을 얻을 수 있습니다. 그러나 이것을 자신의 native module으로 구현해야합니다. Trigger.io- 기반 앱 :

+ (void)getPushStatus:(ForgeTask*)task { 

    NSArray *pushStatus; 

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) { 
     UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings]; 
     UIUserNotificationType notificationTypes = settings.types; 

     if (notificationTypes == UIUserNotificationTypeBadge) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", nil]; 
     } else if (notificationTypes == UIUserNotificationTypeAlert) { 
      pushStatus = [NSArray arrayWithObjects: @"alert", nil]; 
     } else if (notificationTypes == UIUserNotificationTypeSound) { 
      pushStatus = [NSArray arrayWithObjects: @"sound", nil]; 
     } else if (notificationTypes == (UIUserNotificationTypeBadge | UIUserNotificationTypeAlert)) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", @"alert", nil]; 
     } else if (notificationTypes == (UIUserNotificationTypeBadge | UIUserNotificationTypeSound)) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", @"sound", nil]; 
     } else if (notificationTypes == (UIUserNotificationTypeAlert | UIUserNotificationTypeSound)) { 
      pushStatus = [NSArray arrayWithObjects: @"alert", @"sound", nil]; 
     } else if (notificationTypes == (UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound)) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", @"alert", @"sound", nil]; 
     } else { 
      // notificationTypes == UIUserNotificationTypeNone 
      pushStatus = [[NSArray alloc] init]; 
     } 
    } else { 
     UIRemoteNotificationType notificationTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes]; 

     if (notificationTypes == UIRemoteNotificationTypeBadge) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", nil]; 
     } else if (notificationTypes == UIRemoteNotificationTypeAlert) { 
      pushStatus = [NSArray arrayWithObjects: @"alert", nil]; 
     } else if (notificationTypes == UIRemoteNotificationTypeSound) { 
      pushStatus = [NSArray arrayWithObjects: @"sound", nil]; 
     } else if (notificationTypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", @"alert", nil]; 
     } else if (notificationTypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", @"sound", nil]; 
     } else if (notificationTypes == (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)) { 
      pushStatus = [NSArray arrayWithObjects: @"alert", @"sound", nil]; 
     } else if (notificationTypes == (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)) { 
      pushStatus = [NSArray arrayWithObjects: @"badge", @"alert", @"sound", nil]; 
     } else { 
      // notificationTypes == UIRemoteNotificationTypeNone 
      pushStatus = [[NSArray alloc] init]; 
     } 
    } 

    [task success:pushStatus]; 
} 

코드 더미가 두려워하지 마십시오. 첫 번째 절반은> = iOS8, 두 번째 절반은 아래의 모든 것입니다. 기본적으로 사용자가 앱에 대해 어떤 알림 유형을 활성화했는지 알려줍니다.

반환 값은 "배지", "경고"및/또는 "소리"로 구성된 배열입니다.

사용자가 앱에서 푸시를 사용 중지하면 배열이 비어있게됩니다.


추신 : 분명히 위의 코드가 더 잘 수행 될 수 있으므로 Objective-C가 좋지 않습니다. 난 그냥 당신이 안드로이드에 대해 질문 실현했습니다


EDIT) 그러나, 여전히 나를 위해 작동합니다. 내 대답은 iOS와 관련이 있습니다. 이 게시물 Android 4.1: How to check notifications are disabled for the application?에 따르면 안드로이드에 대한 정보를 얻을 수 없습니다.

1

당신은 당신의 채널이 그 때 가입 및되지 않은 경우이, 그들은 구독하는 채널 목록을 반환합니다

forge.parse.push.subscribedChannels (성공, 오류

을 사용할 수 있습니다 콜백에서 당신이 원하는 것을 할 수 있습니다. (구독 등)

+0

하지만 사용자가 푸시 알림을 사용 중지했는지 (설정 페이지를 통해) 구문 분석을 통해 어떻게 알 수 있습니까? – Christian

+0

푸시 알림을 전역으로 끄면 parse-unsubscribe 메서드가 실행되는 것으로 생각하지 않습니다. – Christian