如何使用 Objective-C 实现 LocalNotification?

2023-11-27

我正在尝试在我的应用程序中实现本地通知。我不知道如何正确执行,下面的代码我用于新的数据到达过程,在如何实现通知过程之后,我在这两个过程中都需要通知foreground and background modes.

下面我已经成功background新数据到达检查方法的获取过程

//  Value matching and trying to get new data 
[live_array removeObjectsInArray:stored_array];
       
// if you require result as a string
NSString *result = [stored_array componentsJoinedByString:@","];
NSLog(@"New Data: %@", result);   // objects as string:

上面的代码最后给出了一些string值...一旦值到来,我想显示通知。我所做的一切都在应用程序委托中。


1) 当应用程序关闭时,安排一个本地通知将在 24 小时内触发

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    notification.fireDate = [[NSDate date] dateByAddingTimeInterval:60*60*24];
    notification.alertBody = @"24 hours passed since last visit :(";
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
}

2)如果应用程序已打开(在本地通知触发之前),则取消本地通知

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [[UIApplication sharedApplication] cancelAllLocalNotifications];
}

//对于本地​​通知

我们需要做的第一件事是注册通知。

 // New for iOS 8 - Register the notifications
        UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
        UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];

现在让我们创建通知本身

    UILocalNotification *notification = [[UILocalNotification alloc] init];
    if (notification)
    {
            notification.fireDate = _datePicker.date;

            NSDate *fireTime = [[NSDate date] addTimeInterval:10]; // adds 10 secs
            notification.fireDate = fireTime;
            notification.alertBody = @"Alert!";

            notification.timeZone = [NSTimeZone defaultTimeZone];
            notification.applicationIconBadgeNumber = 1;
            notification.soundName = UILocalNotificationDefaultSoundName;
            switch (_frequencySegmentedControl.selectedSegmentIndex) {
                case 0:
                    notification.repeatInterval = NSCalendarUnitDay;
                    break;
                case 1:
                    notification.repeatInterval = NSCalendarUnitWeekOfYear;
                    break;
                case 2:


           notification.repeatInterval = NSCalendarUnitYear;
                break;
            default:
                notification.repeatInterval = 0;
                break;
        }
        notification.alertBody = _customMessage.text;

创建通知后,我们需要使用应用程序安排它。

// this will schedule the notification to fire at the fire date
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
// this will fire the notification right away, it will still also fire at the date we set
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];

如果我们保持现在的样子,只有当应用程序在后台时,通知才会出现在屏幕上。为了在应用程序位于前台并且触发通知时显示某些内容,我们需要在应用程序委托中实现一个方法。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Notification Received" message:notification.alertBody delegate:nil     cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alertView show];
}

我们在应用程序中添加了一个图标徽章,并且该图标徽章仅在应用程序处于后台时才会显示。通常,您希望在用户打开应用程序并看到通知后关闭该图标。我们还需要在应用程序委托中处理这个问题。

这两种方法就可以解决这个问题。

- (void)applicationWillEnterForeground:(UIApplication *)application 
{
    // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
    NSLog(@"%s", __PRETTY_FUNCTION__);
    application.applicationIconBadgeNumber = 0;
}

- (void)applicationDidBecomeActive:(UIApplication *)application 
{
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    NSLog(@"%s", __PRETTY_FUNCTION__);
    application.applicationIconBadgeNumber = 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Objective-C 实现 LocalNotification? 的相关文章

  • Android 默认通知边距

    再会 我创建了完全自定义的通知视图 但在不同的设备上左 起始 边距不同
  • 是否有针对不同屏幕尺寸的单独故事板?

    基本上我已经完成了一个应用程序 我唯一的问题是 ATM 机应用程序在设计时只考虑了 4 英寸显示屏 当在 3 5 英寸模拟器上运行时 应用程序会丢失 0 5 英寸 显然 那么我的问题是 如何在 Xcode 5 中为不同的屏幕尺寸设置不同的故
  • SwiftUI 列表与右侧的部分索引?

    是否可以有一个在右侧有索引的列表 就像下面 SwiftUI 中的示例一样 我在 SwiftUI 中做了这个 Contacts swift TestCalendar Created by Christopher Riner on 9 11 2
  • 如何在IOS中的UIStackView中设置权重

    UIStackView与安卓类似LinearLayout但我不知道如何设置子视图的权重 假设我有一个垂直的UIStackView and 3 UIImageView就在里面 我想连续设置权重3 6 1UIImageViews 我怎么做 UI
  • XMPPFramework - 如何创建多用户聊天室?

    我如何使用XMPPFramework在iPhone中实现GroupChat 我尝试了以下代码 但房间没有创建 我如何知道房间是否创建 XMPPRoomDelegate没有被调用 当Stream断开连接时 调用handleDidLeaveRo
  • 是否有适用于 iPad 2 的条码扫描仪 SDK? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Firebase 控制台中使用 Apple 新的 APN .p8 证书

    随着最近 Apple 开发者帐户的升级 我面临着一个困难 在尝试创建推送通知证书时 它为我提供了 p8 证书 而不是可以导出到 p12 的 APNs 证书 Firebase 控制台仅接受 p12 证书 那么我如何从这些新的 p8 证书中获取
  • 如何在 iOS 9 上可靠地检测是否连接了外部键盘?

    在 iOS 9 之前 确定是否连接外部键盘的最可靠方法是监听UIKeyboardWillShowNotification并使文本字段成为第一响应者 如中所述这个问题 https stackoverflow com questions 289
  • UIScrollView setZoomScale 将应用的旋转设置回零

    我已经从事地图替换工作很长一段时间了 整个事情的工作原理是UIScrollView由一个支持CATiledLayer 为了旋转我的地图 我旋转图层本身 使用CATransform3DMakeRotation 到目前为止效果很好 但如果我打电
  • 在 Xcode 5 中重命名 iOS 项目[重复]

    这个问题在这里已经有答案了 我需要重命名一个 iOS 项目 有没有办法在不开始一个全新项目的情况下做到这一点 我发现的所有其他信息都与 Xcode 4 或旧版本相关 这些方法似乎使项目崩溃 我在尝试任何名称更改之前创建了一个快照 在 Xco
  • 在 OS X 上创建和使用静态库

    好的 我正在尝试创建一个 Cocoa 库 静态 并使用 但我不断收到错误 我创建了一个超基本的静态库 TSXLib 其中仅包含一个额外的类 import
  • 如何将 UILabel 的值绑定到实例变量?

    我是 mac objective c 的新手 我的问题是 我想知道是否可以将 UILabel 文本绑定到变量 而不必在值更改时手动设置文本 例如 在 Mac OS 上 当我打开新的 Finder 窗口并删除文件时 任务栏中的全局可用空间就会
  • 适用于 iPhone / iPad / iOS 的快速、精益 PDF 查看器 - 提示和提示?

    最近有很多关于绘制 PDF 的问题 是的 您可以使用UIWebView但这无法提供您所期望的优秀 PDF 查看器的性能和功能 您可以绘制PDF页面到 CALayer http www cocoabuilder com archive coc
  • UIButton的高亮状态由什么控制事件开始和结束

    我正在创建类似钢琴的视图UIButton作为钢琴键 什么UIControlEvents当按钮获得和失去突出显示状态时 我应该监听以获得回调吗 我试图创建子类UIButton并添加属性观察者highlighted并且运行良好 然而 有时我需要
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • Firebase 身份验证问题 - 通过电子邮件地址检查用户是否存在

    我在 Firebase 上创建了一个帐户 它有效 但现在我想阻止人们使用已存在的电子邮件地址创建帐户 这是代码 DatabaseManager shared userExists with email completion weak sel
  • 在 Objective C 的类方法中引用类本身

    我希望我没有跳过 ObjC 手册中的这一部分 但是是否可以从类的一个类方法中引用该类 就像在 PHP 中一样 您将使用 this 来引用当前实例 而 self 引用实例的类 this 的 ObjC 等价物将是 self 那么 PHP 的 s
  • 根据 iOS 版本使用不同的类实现?

    iOS 11 最近添加了一个我想使用的新功能 但我仍然需要支持旧版本的 iOS 有没有一种方法可以将同一个类编写两次 并让较新版本的 iOS 使用该类的一个版本 而旧版本的 iOS 使用另一个版本 注 最初我用的是if available
  • 如何将 ios7 通用应用程序升级到基于 Xcode 6 的通用故事板应用程序?

    我目前有一个基于 xcode 5 ios 7 的通用应用程序 因此有两个故事板 我正在考虑将其更新到 ios 8 有没有办法 最佳方法将两个故事板迁移到通用的单个故事板 我在 xcode 6 中看不到转换选项 None
  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我

随机推荐

  • Joda 时间 DateTime 错误地存储在数据库中

    我正在存储 JodaTimeDateTime字段到timestamptz列通过使用org jadira usertype usertype jodatime 1 9 应用服务器有 4时区 数据库服务器 9时区 new DateTime 结果
  • 如何设置和访问类的属性? [复制]

    这个问题在这里已经有答案了 假设我有这样的代码 class Example object def the example self itsProblem problem theExample Example print theExample
  • Mongoose:在 ReplicaSet 上读取

    我有一个 mongodb 副本集 我想从中读取主数据库和辅助数据库的数据 我使用此命令连接到数据库 mongoose connect mongodb user email protected user email protected use
  • 我可以直接从 chrome DevTools 编辑 Angular 项目的 CSS 文件吗?

    使用默认视图封装 模拟 在浏览器开发工具中设置组件样式的最有效方法是什么 我当前的工作流程涉及从开发工具进行大量繁琐的复制和粘贴 如下所示 Chrome 开发工具能够将 DOM 上所做的样式更改保存到源 css 文件中 使用工作区将更改保存
  • Python mysql 连接器返回元组

    我通过 mysql 连接器连接到 mysql 数据库 并运行一个简单的查询来提取 ID 列表 我需要循环该列表并将它们传递到其他代码中 由于某种原因 我得到了一个元组列表 这是预期的行为吗 如果不是 我做错了什么 这是我的代码片段 impo
  • 由于底部导航栏,Flutter 底部工作表不可见

    我试图显示底部表格并让用户选择 我确实喜欢这样 showModalBottomSheet context context builder builder return Column mainAxisSize MainAxisSize min
  • gcc -O2 与无原因错误

    编译包含以下内容的文件时open FILENAME O RDONLY 没有 O2标记一切都很好 但当 O2打开我得到 usr include x86 64 linux gnu bits fcntl2 h In function open u
  • 我如何知道我的 docker mysql 容器何时启动并且 mysql 何时准备好接受查询?

    我正在部署几个不同的 docker 容器 mysql 是第一个 我想在数据库启动后立即运行脚本并继续构建其他容器 该脚本一直失败 因为它试图在设置 mysql 的入口点脚本 来自这个官方的mysql容器 仍在运行 sudo docker r
  • 如何在控制台应用程序中检查 CTRL 键是否被按下#

    我要启动一个控制台应用程序 问题是如何确定CTRL键被单独按下而没有任何其他键 using System using System Text public class ConsoleKeyExample public static void
  • 时间的正则表达式

    我想要 HH MM SS AM PM 的正则表达式 这里 HH 必须是 1 12 MM 必须是 60 分钟 SS 照常 60 秒 我有正确的吗 0 1 9 1 0 2 0 5 0 9 0 5 0 9 59 44 29 60 AM am PM
  • 捆绑包安装使用不同的 Ruby 版本?

    我尝试使用 Knife solo 在 Vagrant 上安装 Ruby 2 0 0 p353 当我以 root 和 vagrant 身份登录时 ruby v返回 Ruby 2 0 0 p353 然而 当我跑步时bundle install在
  • 在运行时在 LINQ 查询中编写 where 子句

    我正在获取一个字符串数组 我想查看域对象中的一定数量的数据字段是否包含所有这些字符串 我知道编译时的数据字段 但不知道编译时数组的大小 有没有一种方法可以让我在运行时编写一个 where 子句 以便我可以在单个 linq 查询中执行我要查找
  • 如何根据字符串的值访问“struct”的成员?

    我想通过使用字符串的值来访问结构中的成员 struct hello world char rate char ssid 有一个变量可以说 char string ssid 我想使用这个字符串的值来引用ssid内的成员hello world结
  • 团队通道上的 botframework 1:1 身份验证 AAD 集成

    我正在寻找在团队频道上连接我的机器人 但我不知道如何确保它仅在我们的域 组织 中使用 我已测试寻找 身份验证 AAD Azure Web App 但它不适用于团队或网络聊天 因为端点地址未重定向 我已经测试了实施 AUTH 卡 但它不适用于
  • Qt:展开〜到主目录

    Qt 是否有任何独立于平台的功能来接受像 myfile 这样的路径 我知道关于wordexp 但是使用独立于平台的包装器会很好 Edit 谢谢大家的回复 myfile 只是一个例子 我正在寻找的是处理文件路径的功能 就像您可以在命令行上编写
  • 如何在 PowerShell 中将 SID 转换为帐户名?

    这个问题的灵感来自于这个类似的问题使用 C 标签 如果我有一个 Windows SID 并且想将其转换为可读的帐户名 如何使用 PowerShell 而不是 C 来实现此目的 现在 我有以下代码 它检索当前登录的用户帐户的组成员身份 Ide
  • Spartan-3E 上的随机数生成

    我需要在 Spartan 3E FPGA 上为我的遗传算法生成伪随机数 并且我想在 verilog 中实现它 您能给我任何关于此的指示吗 当然 Adam 的随机生成器是不可合成的 您必须显式创建一个LFSR 以下示例可能会有所帮助 它是一个
  • 返回 CStringArray 给出错误

    我试图返回一个 CStringArray 在我的 h 中我定义了 Private CStringArray array public CStringArray GetArray 在 我有 CQueue CQueue m hApp 0 m d
  • ASP.NET MVC 多个复选框

    我有一个List我想向用户显示大约 20 个项目 每个项目旁边都有一个复选框 Available我的 ViewModel 上的属性 提交表单时 我希望能够通过以下方法将选中的每个复选框的值传递回我的控制器方法Selections我的 Vie
  • 如何使用 Objective-C 实现 LocalNotification?

    我正在尝试在我的应用程序中实现本地通知 我不知道如何正确执行 下面的代码我用于新的数据到达过程 在如何实现通知过程之后 我在这两个过程中都需要通知foreground and background modes 下面我已经成功backgrou