Как открыть контроллер представления по клику на уведомление в iOS с помощью Objective c? - PullRequest
0 голосов
/ 26 декабря 2018

Я разрабатываю простое приложение в iOS, используя цель c.В моем приложении я добавил уведомление.Он отлично работает и уведомление от сервера, а также отображается для пользователей.Так что мне нужно Как открыть представление контроллера по нажатию на уведомление?Я ищу способ открыть представление после нажатия на полученное уведомление и отобразить уведомление в этом представлении, чтобы позволить пользователям читать информацию уведомления.кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 26 декабря 2018

В вашем классе AppDelegate.m добавьте приведенный ниже метод Delegate

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 

Когда приложение получает уведомление, которое вызовет этот метод делегата, вы можете обработать свою логику здесь.Ниже приведена простая логика

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

    NSLog(@"didReceiveRemoteNotification with completionHandler");
    // Must call completion handler
    if (userInfo.count > 0) {
        completionHandler(UIBackgroundFetchResultNewData);
    } else {
        completionHandler(UIBackgroundFetchResultNoData);
    }
    NSLog(@"userInfo:%@", userInfo);    
    __weak typeof (self) weakSelf = self;
    dispatch_async(dispatch_get_main_queue(), ^{
        __strong typeof(weakSelf) strongSelf = weakSelf;
        SEL openDetails = @selector(openDetailsViewFromNotificationInfo:);
        //The below line will removes previous request.
        [NSObject cancelPreviousPerformRequestsWithTarget:strongSelf selector:openDetails object:userInfo];
        //Not neccessary 
        [strongSelf performSelector:openDetails withObject:userInfo afterDelay:0.5];
    });

}
-(void)openDetailsViewFromNotificationInfo:(NSDictionary *)userInfo {

    UINavigationController *navVC = (UINavigationController *)self.window.rootViewController;
    UIViewController *topVC = navVC.topViewController;
    NSLog(@"topVC: %@", topVC);
    //Here BaseViewController is the root view, this will initiate on App launch also.
    if ([topVC isKindOfClass:[BaseViewController class]]) {
        BaseViewController *baseVC = (BaseViewController *)topVC;
        if ([baseVC isKindOfClass:[YourHomeVC class]]) {
            YourHomeVC *homeVC = (YourHomeVC *)baseVC;
            homeVC.notificationUserInfo = userInfo;
        }
    }
}
...