2014-04-04 60 views
0

我明白,我們可以檢查,如果用戶已啓用/禁用遠程通知與此代碼:如何檢查本地通知是否啓用/禁用?

[[UIApplication sharedApplication] enabledRemoteNotificationTypes]

但是有關檢查本地通知?

我沒有找到本地通知類型的相應屬性,並且我已驗證enabledRemoteNotificationTypes僅用於遠程通知。

我們都知道,用戶可以編輯他們的通知設置,這會影響遠程和本地。

+0

Possibe重複:http://stackoverflow.com/questions/8644134/determine-on-iphone-if-user-has-enabled-local-notifications –

回答

1

我不確定,但我不認爲你可以訪問這些信息。你可以檢查用戶是否爲您的應用程序啓用的通知

的方法之一是向自己發送一個本地通知以1秒的延遲:

UILocalNotification *testNotification = [[UILocalNotification alloc] init]; 
localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1]; 
localNotification.alertBody = @"Test notification"; 
localNotification.timeZone = [NSTimeZone defaultTimeZone]; 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

,並檢查你發現它在:

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification) { 

    // If you get here, notifications are enabled 
} 

所有剩下的就是添加信息(例如,在localNotification.userInfo中),因此如果您正在處理您的測試通知,或者它是「真實」通知,您可以在didReceiveLocalNotification:中知道。

0
- (BOOL) isLocalNotificationsEnable { 
    if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) { 
     UIUserNotificationSettings *grantedSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; 
     return (grantedSettings.types == UIUserNotificationTypeNone) ? NO : YES; 
    } 
    return NO; 
} 

注意:如果您的目標<的iOS 8.0,如果塊只要求。