收到时 UILocalNotification
application:DidReceiveLocalNotification当应用程序位于Foreground时,将调用此方法.application:DidReceiveLocalNotification.如何确定这些方案中的哪一个正在发生?我想以不同的方式对待他们.
如果应用程序在后台,则用户表示他们想要查看该事件.所以在application:DidReceiveLocalNotification我不想再问他们的时候,我只是想带他们参加这个活动.
但是,如果应用程序在通知触发和调用时位于Foreground中application:DidReceiveLocalNotification,我想询问用户是否要查看事件.
本质上我会:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
if (appLauncedFromBackground)
// go to event
else
// ask if user wants to view event
}
Run Code Online (Sandbox Code Playgroud)
我曾想过将一个bool值写入一个NSUserDefault里面applicationWillEnterForeground:application,然后在里面读取并重置它application:DidReceiveLocalNotification.但我想如果有办法测试,这将是一个更好的路线.
谢谢,马克
编辑******************************
谢谢xuzhe,但在这种情况下不会起作用.这里有一些细节可以解释为什么它不会工作,也许可以帮助某人为我回答这个问题:
的UILocalNotification,我坐在这里就像是被安排在用户选择的时间安排通知我不知道用户会做时通报火灾,所以当火日历事件的事件.我正在使用通知的userInfo来存储有关已调度事件的数据,但是如建议的那样设置像inBackground这样的值将不起作用.
我知道如果用户决定要"查看"该事件,这将是两种情况之一.(这一切都将假设应用程序在后台或前台而不是退出).
1 - 如果在应用程序未被使用时触发&&应用程序在后台并且未退出,iOS将通知用户已发生事件并提供进入负责任应用程序的选项(在本案中属于我的应用程序) ).在这一点上假设用户说"是的把我带到这个很酷的应用程序",它将从后台打开应用程序并调用应用程序:DidReceiveLocalNotification我可以获得所有通知userInfo.
2 - 当预定事件发生时,用户偶然会出现在我的应用程序中.此时应用程序:再次调用DidReceiveLocalNotification方法,然后我可以获取所有通知userInfo.
但正是在这一点上,我想知道这两个场景中的哪一个发生了1或2.
希望这个关于我使用的更多细节UILocalNotification将有助于回答这个问题.提前谢谢 …
假设我为iPhone应用程序设置了5个本地通知,然后用户删除了该应用程序.如果再次安装该应用,则会显示之前的通知.
我知道以下代码会删除所有通知
[[UIApplication sharedApplication] cancelAllLocalNotifications];
Run Code Online (Sandbox Code Playgroud)
但是我在哪里放置代码以便在删除应用程序时执行它?
或任何其他方式来解决这个问题.
是否可以在应用程序未运行时通过本地通知增加应用程序徽章?
我知道如何设置徽章,但没有找到任何方法来增加此值.
localNotification.applicationIconBadgeNumber = 23;
更新:我找到了一个(远非完美)解决方案.如果用户未打开应用并为每个+1事件添加通知,您可以预测会发生什么.
一个例子:
==>将这些通知放在一个数组中,并在应用程序退出之前设置它们.
但是,我正在寻找比此解决方案更好的解决方案.
iphone cocoa-touch push-notification ios4 uilocalnotification
专家,我有一个场景,我需要每天三次(早上,下午,晚上)通知用户.根据每个日期的数据库值,这些通知的时间每天都会有所不同.
这三个通知是可配置的.意思是用户可能只是选择设置下午和晚上,同时关闭设置下的早晨通知.
根据我的理解,我可以使用本地通知实现此目的.
我可以执行以下操作: - 在应用程序退出之前,在didFinishLaunchingWithOptions中,我可以检查下一个通知到期是什么,是否设置(开/关).如果设置,我安排它.如果不是,我继续下一个通知类型并做同样的事情.如果关闭所有通知,显然不会安排任何通知.
现在,当通知显示时,我会看到警报,其中有两个按钮"关闭"和"查看".如果用户选择"查看",我的应用程序将恢复活动状态,并在用户退出之前安排下一个通知.
到现在为止还挺好.
现在,如果用户选择"关闭",我该怎么办?它不会启动我的应用程序,因此下一个通知不会被安排?
我该如何实现这一目标?有没有更好的方法来做到这一点?
救命!救命!救命!
编辑:所以把应用程序放在后台就行了.
原版的:
所以我一直在尝试向新的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]) { …Run Code Online (Sandbox Code Playgroud) uilocalnotification swift swift3 ios10 unusernotificationcenter
我正在制作一个iPhone应用程序,它需要本地通知.
在本地通知中有repeatInterval属性,我们可以将单位重复间隔设置为分钟,小时,日,周,年等.
我希望重复间隔应该是4个小时.
所以每4小时就有一次本地通知.
我不希望用户为每个设置单独的通知.
我希望用户能够将repeatInterval设置为4小时.
我怎么做?
iphone cocoa-touch ios4 localnotification uilocalnotification
我必须为iPhone创建一个闹钟应用程序,用户可以在其中设置闹钟时间和声音.在这样做时,我使用了UILocalNotification来引发警报.
现在,在UILocalNotification中,首先我们通过选项"关闭"和"查看"获得通知警报.如果用户点击"查看",则我的代表收到application:didReceiveLocalNotification:消息并播放警报声音.
但在系统本机警报应用程序中,我们看不到通知警报; 它只是直接播放警报声.如何让我的应用程序使用此行为?
在iOS 7.0中,NSWeekCalendarUnit已弃用.文档说它必须被替换:
使用NSCalendarUnitWeekOfMonth或NSCalendarUnitWeekOfYear,具体取决于你的意思
我使用NSWeekCalendarUnit了每周的提醒,我要挑来获得相同的意思是哪一个?我不明白之间的差别NSCalendarUnitWeekOfMonth和NSCalendarUnitWeekOfYear.
在没有令人信服的答案的情况下,有人在此问过同样的问题.
这很令人困惑. Next week在我的理解原子.今天是Sun 30 March 2014.因此Next week永远都是Sun 6 March 2014.这怎么可能从一个月或一年的角度改变?
我试图用一个清除我的应用程序的"未读"徽章UILocalNotification.从逻辑上讲,你会认为这会通过设置来完成 applicationIconBadgeNumber一个的UILocalNotification情况下为0,但它不工作,并为applicationIconBadgeNumber文档说"默认值是0,表示"没有变化"."
那么,一旦设置了本地通知,真的无法清除徽章吗?
更新:一些简单的代码:
-(void)applicationDidFinishLaunching
{
// Set the appication icon badge to 1 in 10 minutes, using a local notification so it works in the background:
// This works fine.
UILocalNotification *episodeNotification = [[UILocalNotification alloc] init];
episodeNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:(60 * 10)];
episodeNotification.timeZone = [NSTimeZone defaultTimeZone];
episodeNotification.applicationIconBadgeNumber = 1;
[[UIApplication sharedApplication] scheduleLocalNotification:episodeNotification];
[episodeNotification release];
// Clear the application icon badge in 20 minutes, again using a local notifcation so it works in the background: …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用UILocalNotification来安排通知.通知工作正常,并在我需要时显示.我没有这个问题.我没有做任何远程/推送通知.
令我疑惑的是,我从未在几个应用程序中看到过您通常看到的推送通知的着名权限对话框.我甚至重置了我的设备并运行了我的应用程序 这仍然没有导致权限对话框出现.
如果您的应用仅使用本地通知,或者我没有实现某些实际导致应用请求此权限的方法,是否会显示此权限对话框?
我知道我可以在应用程序启动后实现我自己的对话框,要求用户提供此权限,但我希望Apple能够解决这个问题,特别是因为它在设置应用程序中对待远程和本地通知.
iphone ×6
ios ×4
ios4 ×3
cocoa-touch ×2
objective-c ×2
swift ×2
date ×1
ios10 ×1
ios7 ×1
local ×1
swift3 ×1
uialertview ×1
uikit ×1
xcode ×1