UserNotification 未显示 (iOS 10)
UserNotification is not showing (iOS 10)
我无法在 iOS 10 中触发 UserNotification
。我将从我的代码开始:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = (UNAuthorizationOptionBadge | UNAuthorizationOptionAlert | UNAuthorizationOptionSound);
center.delegate = self;
[center requestAuthorizationWithOptions: options
completionHandler: ^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Granted notifications!");
}
}];
//
这有效,我看到了日志。
那么,我有:
-(void)application: (UIApplication *)application performFetchWithCompletionHandler: (void (^)(UIBackgroundFetchResult))completionHandler {
//
UNMutableNotificationContent *content = [UNMutableNotificationContent new];
content.title = NSLocalizedString(@"Updates are available", nil);
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval: 1
repeats: NO];
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier: @"IDLocalNotification"
content: content
trigger: trigger];
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center addNotificationRequest: request withCompletionHandler: ^(NSError * _Nullable error) {
if (!error) {
NSLog(@"Notification was requested!");
}
}];
再次,这有效,我看到了日志。
但是我的屏幕上没有看到通知(触发延迟只有 1 秒,但我也尝试了更大的值)。
此外,willPresentNotification
委托方法从未达到。
我错过了什么?
找到问题了。
原来我需要设置内容的body
,而不仅仅是title
:
UNMutableNotificationContent *content = [UNMutableNotificationContent new];
content.body = [NSString localizedUserNotificationStringForKey: @"Updates are available" arguments: nil];
我什至可以将 title
排除在外并且有效。
我无法在 iOS 10 中触发 UserNotification
。我将从我的代码开始:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
UNAuthorizationOptions options = (UNAuthorizationOptionBadge | UNAuthorizationOptionAlert | UNAuthorizationOptionSound);
center.delegate = self;
[center requestAuthorizationWithOptions: options
completionHandler: ^(BOOL granted, NSError * _Nullable error) {
if (granted) {
NSLog(@"Granted notifications!");
}
}];
//
这有效,我看到了日志。
那么,我有:
-(void)application: (UIApplication *)application performFetchWithCompletionHandler: (void (^)(UIBackgroundFetchResult))completionHandler {
//
UNMutableNotificationContent *content = [UNMutableNotificationContent new];
content.title = NSLocalizedString(@"Updates are available", nil);
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval: 1
repeats: NO];
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier: @"IDLocalNotification"
content: content
trigger: trigger];
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center addNotificationRequest: request withCompletionHandler: ^(NSError * _Nullable error) {
if (!error) {
NSLog(@"Notification was requested!");
}
}];
再次,这有效,我看到了日志。
但是我的屏幕上没有看到通知(触发延迟只有 1 秒,但我也尝试了更大的值)。
此外,willPresentNotification
委托方法从未达到。
我错过了什么?
找到问题了。
原来我需要设置内容的body
,而不仅仅是title
:
UNMutableNotificationContent *content = [UNMutableNotificationContent new];
content.body = [NSString localizedUserNotificationStringForKey: @"Updates are available" arguments: nil];
我什至可以将 title
排除在外并且有效。