Bja*_*rte 27 uilocalnotification swift swift3 ios10 unusernotificationcenter
编辑:所以把应用程序放在后台就行了.
原版的:
所以我一直在尝试向新的UNUserNotificationCenter添加通知,但我似乎没有得到它.
我的视图控制器有一个动作:
@IBAction func sendPressed(_ sender: AnyObject) {
let content = UNMutableNotificationContent()
content.title = "Hello"
content.body = "What up?"
content.sound = UNNotificationSound.default()
// Deliver the notification in five seconds.
let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false)
let request = UNNotificationRequest.init(identifier: "FiveSecond", content: content, trigger: trigger)
// Schedule the notification.
let center = UNUserNotificationCenter.current()
center.add(request) { (error) in
print(error)
}
print("should have been added")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let center = UNUserNotificationCenter.current()
center.requestAuthorization([.alert, .sound]) { (granted, error) in
}
}
Run Code Online (Sandbox Code Playgroud)
而且我Notification Content Extension在项目中也有一个,但它似乎根本没有被触发,任何想法我都缺少了?我正在尝试用户文档中的示例,但它并没有告诉我更多或者我错过了它.
这里:https://developer.apple.com/reference/usernotifications/unmutablenotificationcontent
另外:https : //developer.apple.com/reference/usernotificationsui https://developer.apple.com/reference/usernotifications
LC *_*C 웃 29
你需要注册通知...我试过,这是有效的.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
let center = UNUserNotificationCenter.current()
center.requestAuthorization([.alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
}
return true
}
Run Code Online (Sandbox Code Playgroud)
编辑:您不需要将您的应用程序放在后台,以显示iOS 10以后的通知.
使用下面的回调配置通知以显示在前台.
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
Run Code Online (Sandbox Code Playgroud)
这是一个示例项目.
Elo*_*han 17
使用Objective-C实现:
我在这里写了一个Demo项目: iOS10AdaptationTips.
导入UserNotifications
///Notification become independent from Foundation
@import UserNotifications;
Run Code Online (Sandbox Code Playgroud)请求localNotification的授权
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert)
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (!error) {
NSLog(@"request authorization succeeded!");
[self showAlert];
}
}];
Run Code Online (Sandbox Code Playgroud)
安排localNotification
更新应用程序图标徽章编号
// //Deliver the notification at 08:30 everyday
// NSDateComponents *dateComponents = [[NSDateComponents alloc] init];
// dateComponents.hour = 8;
// dateComponents.minute = 30;
// UNCalendarNotificationTrigger *trigger = [UNCalendarNotificationTrigger triggerWithDateMatchingComponents:dateComponents repeats:YES];
UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
content.title = [NSString localizedUserNotificationStringForKey:@"Elon said:" arguments:nil];
content.body = [NSString localizedUserNotificationStringForKey:@"Hello Tom?Get up, let's play with Jerry!"
arguments:nil];
content.sound = [UNNotificationSound defaultSound];
/// 4. update application icon badge number
content.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);
// Deliver the notification in five seconds.
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger
triggerWithTimeInterval:5.f repeats:NO];
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@"FiveSecond"
content:content trigger:trigger];
/// 3. schedule localNotification
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
if (!error) {
NSLog(@"add NotificationRequest succeeded!");
}
}];
Run Code Online (Sandbox Code Playgroud)然后它会显示如下:
如果默认情况下重复只显示一个
而不是在iOS9的锁定屏幕上显示多个:http://i67.tinypic.com/98t75s.jpg
并自动支持3D Touch
http://a67.tinypic.com/dorw3b.jpg
我在这里写了一个Demo: iOS10AdaptationTips.
| 归档时间: |
|
| 查看次数: |
48234 次 |
| 最近记录: |