2016-10-06 9 views

答えて

5
#import <UserNotifications/UserNotifications.h> 
#define SYSTEM_VERSION_GRATERTHAN_OR_EQUALTO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 

//interface 
@interface AppDelegate : UIResponder <UIApplicationDelegate,UNUserNotificationCenterDelegate> 

@end 

//implementation 
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
    [self registerForRemoteNotifications]; 
    return YES; 
} 

- (void)registerForRemoteNotifications { 
    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 { 
     // Code for old versions 
    } 
} 

////...........Handling delegate methods for UserNotifications........ 
//Called when a notification is delivered to a foreground app. 

-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler{ 
    NSLog(@"User Info : %@",notification.request.content.userInfo); 
    completionHandler(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge); 
} 

//Called to let your app know which action was selected by the user for a given notification. 
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler{ 
    NSLog(@"User Info : %@",response.notification.request.content.userInfo); 
    completionHandler(); 
} 

これはあなたを助ける可能性があります。 :)

+0

Sommm、どこで通知をフォアグラウンドで表示するためのパラメータを設定しましたか?同じように見えるので、通知はバックグラウンドモードでのみ表示されます。通知バーに表示されるメイズを表示します。 –

+0

以前このソリューションを使用しましたか? –

+0

私は現在のプロジェクトでこれを使用していますが、正常に動作します。 – Sommm

0
You can do this way. 

//in Appdelegate 
-(void)application:(UIApplication *)application didReceiveLocalNotification(UILocalNotification *)notification 
{ 
    dispatch_async(dispatch_get_main_queue(),^{ 

    NSLog(@"alertbody ..%@", notification.alertBody); 
    NSLog(@"title ..%@", notification.alertTitle); 
    NSLog(@"action ..%@", notification.alertAction); 
    NSLog(@"userinfo..%@", notification.userInfo); 
    [[NSNotificationCenter defaultCenter]postNotificationName:@"NotificationReceived" object:nil userInfo:notification.userInfo]; 
      }); 
} 


//in present view controller 
-(void)viewDidLoad 
{ 
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(notificationReceivedMethod:) name:@"NotificationReceived" object:nil]; 
} 

-(void) viewWillDisappear:(BOOL)animated { 
{ 
[[NSNotificationCenter defaultCenter]removeObserver:self name:@"NotificationReceived" object:nil]; 
} 

-(void)notificationReceivedMethod 
{ 
//create you custom popup or view 
} 
+0

いいえいいえ!私はiOS 10のUserNotificationフレームワークについて尋ねました –

関連する問題