2017-03-10 13 views
0

リモート通知の許可を求めるときに問題があります。IOS 9はリモート通知の許可を求めていません

これはiOS 10上で完璧に動作しますが、iOS 9デバイスでこれを実行しようとするとアラートが表示されず、UIApplicationデリゲートメソッド "application:didRegisterForRemoteNotificationsWithDeviceToken:"が呼び出されません。いずれも「失敗した」方法ではありません。

私はシミュレータではなく、実際のデバイスでのみテストしています。私が現在許可を求めているコードは、次のとおりです。

-(void)requestPushPermissions { 
NSLog(@"Starting register for remote Notification"); 
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; 
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) { 
    [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:UNAuthorizationOptionAlert | UNAuthorizationOptionBadge | UNAuthorizationOptionSound completionHandler:^(BOOL granted, NSError * _Nullable error) { 
     if (granted) { 
      NSLog(@"Got a yes!"); 
     } 
     else { 
      NSLog(@"Got a no..."); 
     } 
    }]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
} 
else { 
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; 
    [[UIApplication sharedApplication] registerForRemoteNotifications]; 
} 
} 

誰か手がかりを得ましたか?

+1

でpushnotificationを有効

#import "AppDelegate.h" #define SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) @interface AppDelegate() @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. [self registerForRemoteNotification]; return YES; } - (void)registerForRemoteNotification { if(SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(@"10.0")) { UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; center.delegate = self; [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){ if(!error){ [[UIApplication sharedApplication] registerForRemoteNotifications]; } }]; } else { [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [[UIApplication sharedApplication] registerForRemoteNotifications]; } } 

このコードを試してみてください?シミュレータで通知が正常に機能しないことを覚えておいてください。 –

+0

@RicardoAlves質問に書いたとおり、私はシミュレータではなく、実際のデバイスでしかテストしません。とにかくありがとう。 – Pointblaster

答えて

3

を使用すると、デバイスまたはシミュレータ上で作業している機能

関連する問題