2016-12-24 20 views
5

Câu hỏi này dành riêng cho các thay đổi của APNS trên iOS 10.Cách kiểm tra xem người dùng đã bật thông báo đẩy từ cài đặt chưa?

Đây là dòng chảy của ứng dụng của tôi:

  1. App cài đặt
  2. App Bắt đầu ➝ Login Screen
  3. thành công Login ➝ Home Screen
  4. Push Notification ➝ Yêu cầu
  5. Push Notification ➝ Don 't Cho phép
  6. Ứng dụng Đóng
  7. Cài đặt ➝ Thông báo đẩy được bật cho người dùng
  8. Ứng dụng Mở
  9. Cách kiểm tra xem cài đặt có được cập nhật không?
  10. App Đóng
  11. Cài đặt ➝ tài tàn tật Push Notification
  12. App mở
  13. Làm thế nào để kiểm tra xem các thiết lập cập nhật?

Tôi chỉ yêu cầu thông báo đẩy (bước 4.) khi người dùng đăng nhập. Vì vậy, cho đến khi người dùng đăng xuất, tôi sẽ không thể yêu cầu lại để đẩy.

Có giải pháp gọn gàng và rõ ràng nào để chúng tôi có thể hỗ trợ iOS 10 thay đổi trong khi vẫn hỗ trợ iOS 8 hoặc 9 không?

+0

Bạn có tìm thấy bất kỳ giải pháp cho – Dory

Trả lời

0

bạn có thể sử dụng currentUserNotificationSettings bất cứ khi nào ứng dụng của bạn nhập vào nền trước.

UIUserNotificationSettings *grantedSettings = [[UIApplication sharedApplication] currentUserNotificationSettings]; 
    if (grantedSettings.types == UIUserNotificationTypeNone) { 
      NSLog(@"No permiossion granted"); 
     } 
     else if (grantedSettings.types & UIUserNotificationTypeSound & UIUserNotificationTypeAlert){ 
      NSLog(@"Sound and alert permissions "); 
     } 
     else if (grantedSettings.types & UIUserNotificationTypeAlert){ 
      NSLog(@"Alert Permission Granted"); 
     } 

Nếu bạn muốn kiểm tra xem tình trạng đã thay đổi từ trước đó, Bạn có thể giữ giá trị trước đó của currentUserNotificationSettings đối với một số thay đổi và so sánh nó với giá trị hiện tại thêm giờ trong applicationWillEnterForeground phương pháp.

+0

này này có vẻ là một mã số cho các thông báo địa phương , nó có hoạt động với các thông báo từ xa không? – Hemang

+0

Không, CurrentUserNotificationCài đặt hoạt động cho cả hai. - sẽ hoạt động đối với các thông báo từ xa – Darshana

6

sử dụng này số-

if ([[UIApplication sharedApplication] isRegisteredForRemoteNotifications]) { 
// yes 
}else{ 
// no 
} 
3

UIUserNotificationSettings đã bị phản đối trở lại trong iOS8. Nếu bạn muốn truy cập trạng thái chung của cài đặt ứng dụng, hãy xem UNUserNotifications, khung công tác mới. Sự hiểu biết của tôi là nó xử lý push và local như một điều. Khi bạn đăng ký thông báo, bạn có thể gọi để đăng ký push. Nhưng đối với các quyền cục bộ - badging và vân vân, bạn vẫn cần phải yêu cầu sự cho phép của người dùng. Tức là, thiết bị của bạn có thể chấp nhận các thông báo đẩy mà không có sự cho phép của người dùng để nhận các cập nhật dữ liệu, nhưng bạn chỉ có thể hiển thị thông báo qua trung tâm với các quyền. Dưới đây là cách xem các quyền nào đã được cấp.

  1. nhập khuôn khổ vào lớp học của bạn

    @import UserNotifications; 
    
  2. Query các thiết lập

    - (void)_queryNotificationsStatus 
    { 
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
        [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings *settings){ 
    
        //1. Query the authorization status of the UNNotificationSettings object 
        switch (settings.authorizationStatus) { 
        case UNAuthorizationStatusAuthorized: 
         NSLog(@"Status Authorized"); 
         break; 
        case UNAuthorizationStatusDenied: 
         NSLog(@"Status Denied"); 
         break; 
        case UNAuthorizationStatusNotDetermined: 
         NSLog(@"Undetermined"); 
         break; 
        default: 
         break; 
        } 
    
    
        //2. To learn the status of specific settings, query them directly 
        NSLog(@"Checking Badge settings"); 
        if (settings.badgeSetting == UNAuthorizationStatusAuthorized) 
        NSLog(@"Yeah. We can badge this puppy!"); 
        else 
        NSLog(@"Not authorized"); 
    
        }]; 
    } 
    
Các vấn đề liên quan