2016-12-05 3 views
0

Я использую APNs и это отлично работает на прошивке 9. С новых изменениями толчка API на iOS10 я не могу зарегистрировать для нажимного уведомления, поэтому я вставить следующие изменения:IOS Push уведомление

  1. Включить уведомление толчка в вкладку целевых возможностей.
  2. В didFinishLaunchingWithOptions мы проверяем версию ОС и зарегистрировать как следует:

    if (SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"10.0")) { 
    
        //ios 10 Notifiction 
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
        center.delegate = self; 
        [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){ 
         if(!error){ 
          [[UIApplication sharedApplication] registerForRemoteNotifications]; 
          NSLog(@"iOS 10 push notification register successfully "); 
         } 
        }]; 
    } else { 
        // iOS 8-9 Notifications 
        [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
    
        [[UIApplication sharedApplication] registerForRemoteNotifications]; 
        NSLog(@"iOS 9 push notification register successfully "); 
    
    } 
    

С этими изменениями мне удалось выполнить регистрацию в прошивке 9 и прошивке 10, но у меня есть несколько проблем:

  1. Как только я включаю push-уведомление на вкладке целевых возможностей, push-уведомление перестает работать на iOS 9, хотя регистрация была успешно завершена.
  2. Толкатель вообще не работает на iOS 10, хотя регистрация была успешно завершена.

Пожалуйста, имейте в виде, что если отключить уведомление толчка на вкладке целевых возможностей (с тем же кодом) нажимное возвращение на работу на 9 прошивке, но я не могу зарегистрироваться для APNS на прошивке 10.

+0

см. Этот раз http://stackoverflow.com/questions/39267549/ios-how-to-integrate-push-notification-in-ios-10/39268135#39268135 –

+0

уже попробуйте это тоже. включенную вкладку «Push Notification» в вкладке «Возможности», добавленную платформу UserNotifications и UNUserNotificationCenterDelegate, проверьте версию ОС и зарегистрируйтесь успешно в обеих версиях ОС. проблема в том, что didReceiveRemoteNotification не вызывает. Мне не нужно знать о действии пользователя в уведомлении, но я внедрил didReceiveRemoteNotification: userInfo fetchCompletionHandler, а также –

ответ

0
if #available(iOS 8.0, *) { 
     let settings: UIUserNotificationSettings = UIUserNotificationSettings (types: [.alert, .badge, .sound], categories: nil) 
     application.registerUserNotificationSettings(settings) 
     application.registerForRemoteNotifications() 
    }else { 
     let types: UIRemoteNotificationType = [.alert, .badge, .sound] 
     application.registerForRemoteNotifications(matching: types) 
    } 
+0

Спасибо, но проблема не в регистрации, это нажатие –