2016-10-18 4 views
1

enter image description hereIOS 10 Получения Push уведомления оповещения Дважды в iPhone

Я столкнулся проблемы в прошивке 10 и iPhone. Дважды нажмите предупреждающее уведомление. Просмотрите видео ниже.

Я пишу аналогичный код в willPresentNotification и didReceiveNotificationResponse метод делегирования уведомлений. Есть ли какие-либо изменения для меня, чтобы делать изменения кода в обоих методах, потому что я не сталкиваюсь с проблемой в iPad.

Ваша помощь будет оценена.

ответ

0

В iOS 10 мы должны позвонить UNUserNotificationCenter в appDelegate didFinishLaunchingWithOptions.

Вы должны импортировать UserNotifications.framework и добавить UNUserNotificationCenterDelegate в Appdelegate

AppDelegate.h

#import <UIKit/UIKit.h> 
#import <UserNotifications/UserNotifications.h> 

@interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate> 

@property (strong, nonatomic) UIWindow *window; 

@end 

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    if([[[UIDevice currentDevice]systemVersion]floatValue]<10.0) 
    { 
     [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
     [[UIApplication sharedApplication] registerForRemoteNotifications]; 
    } 
    else 
    { 
     UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; 
     center.delegate = self; 
     [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error) 
     { 
     if(!error) 
     { 
      [[UIApplication sharedApplication] registerForRemoteNotifications]; 
      NSLog(@"Push registration success."); 
     } 
     else 
     { 
      NSLog(@"Push registration FAILED"); 
      NSLog(@"ERROR: %@ - %@", error.localizedFailureReason, error.localizedDescription); 
      NSLog(@"SUGGESTIONS: %@ - %@", error.localizedRecoveryOptions, error.localizedRecoverySuggestion); 
     } 
    }]; 
    } 
    return YES; 
} 

Для получения информации в Swift See this

+0

Да, я реализовал код iOS 10 и отлично работает на iPad, но не на iPhone 6 с iOS 10. Я получаю предупреждение дважды, если возможно, просмотрите видео. –

+0

@PareshVasoya вы можете проверить свой метод didFinishLaunchingWithOptions, который вы дважды не вызываете «registerUserNotificationSettings». –

+0

Да, я дважды это проверил, но зарегистрировался только один раз в методе didFinishLaunchingWithOptions для iOS 10. –

0

Я нашел ошибку. Я писал один и тот же код в обоих методах делегата и получал доступный контент: 1 параметр в полезной нагрузке, который вызвал проблему, когда оба метода запускались на переднем плане. Это приводит к тому, что приложение отображает два предупреждения для одного push-уведомления.