Цель C iOS 12 локальное уведомление должно всегдаAlertWhileAppIsForeground force close - PullRequest
0 голосов
/ 20 марта 2019

У меня ниже код и хорошо работает ниже iOS 11,

// 申请通知权限
                        [[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:(UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error) {

                            // A Boolean value indicating whether authorization was granted. The value of this parameter is YES when authorization for the requested options was granted. The value is NO when authorization for one or more of the options is denied.

                            if (granted) {

                                // 1、创建通知内容,注:这里得用可变类型的UNMutableNotificationContent,否则内容的属性是只读的
                                UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];

                                NSString* buysell;
                                if([trade.bidAsk isEqualToString:@"B"]){
                                    buysell = @"Success BUY";
                                }else{
                                    buysell = @"Success SELL";
                                }
                                // 标题
                                content.title = buysell;
                                // 次标题
                                //content.subtitle = trade.productKey.symbol;
                                // 内容
                                SpecialNumberFormat* formatter = [[SpecialNumberFormat alloc] init];
                                NSString* symbol = trade.productKey.symbol;
                                NSString* tradePrice = [formatter format:trade.exePrice];
                                NSString* tradeQty = [formatter format:trade.exeQty];
                                NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
                                [timeFormat setDateFormat:@"HH:mm:ss"];
                                NSString* time = [timeFormat stringFromDate:trade.exeTime];

                                NSString* cbody = [NSString stringWithFormat: @"%@, Time: %@, Price: %@, Qty: %@", symbol, time, tradePrice, tradeQty];
                                NSLog(@"%@", cbody);
                                content.body = cbody;

                                // 通知的提示声音,这里用的默认的声音
                                content.sound = [UNNotificationSound defaultSound];

                                //NSURL *imageUrl = [[NSBundle mainBundle] URLForResource:@"jianglai" withExtension:@"jpg"];
                                //UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"imageIndetifier" URL:imageUrl options:nil error:nil];

                                // 附件 可以是音频、图片、视频 这里是一张图片
                                //content.attachments = @[attachment];

                                // 标识符
                                content.categoryIdentifier = @"categoryIndentifier";
                                [content setValue:@(YES) forKeyPath:@"shouldAlwaysAlertWhileAppIsForeground"];

                                // 2、创建通知触发
                                /* 触发器分三种:
                                 UNTimeIntervalNotificationTrigger : 在一定时间后触发,如果设置重复的话,timeInterval不能小于60
                                 UNCalendarNotificationTrigger : 在某天某时触发,可重复
                                 UNLocationNotificationTrigger : 进入或离开某个地理区域时触发
                                 */
                                UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:5 repeats:NO];

                                // 3、创建通知请求
                                UNNotificationRequest *notificationRequest = [UNNotificationRequest requestWithIdentifier:@"Notification" content:content trigger:trigger];

                                // 4、将请求加入通知中心
                                [[UNUserNotificationCenter currentNotificationCenter] addNotificationRequest:notificationRequest withCompletionHandler:^(NSError * _Nullable error) {
                                    if (error == nil) {
                                        NSLog(@"已成功加推送%@",notificationRequest.identifier);
                                    }
                                }];
                            }
                        }];

, но принудительное закрытие из-за iOS 12 удалило mustAlwaysAlertWhileAppIsForeground. Что я могу сделать, чтобы решить эту проблему? В настоящее время он становится все менее и менее справочным для target-c, поэтому могу ли я использовать полный код в качестве примера для решения этой проблемы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...