请求用户允许在 iOS 8 中接收 UILocalNotifications

2023-12-23

我已经在应用程序委托中使用以下命令设置了本地通知:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UILocalNotification *notification = [[UILocalNotification alloc]init];
    [notification setAlertBody:@"Watch the Latest Episode of CCA-TV"];
    [notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:5]];
    [notification setTimeZone:[NSTimeZone defaultTimeZone]];
    [application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}

当我运行该应用程序然后退出它时,我收到一条错误消息:

2014-06-07 11:14:16.663 CCA-TV[735:149070]尝试安排本地通知{火 日期 = 2014 年 6 月 7 日星期六 11:14:21 太平洋夏令时间,时间 区域 = America/Los_Angeles (PDT) 偏移量 -25200(日光),重复 间隔 = 0,重复计数 = UILocalNotificationInfiniteRepeatCount, 下次火灾日期 = 2014 年 6 月 7 日星期六 11:14:21 太平洋夏令时 时间、用户信息 = (null)}有警报但尚未收到 用户允许显示警报

我如何获得显示警报所需的权限?


从 iOS 8 开始,您需要征得用户的许可才能显示应用程序的通知,这适用于远程/推送和本地通知。在 Swift 中你可以这样做,

Swift 2.0 更新

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    // Override point for customization after application launch.
    if(UIApplication.instancesRespondToSelector(Selector("registerUserNotificationSettings:")))
    {
        let notificationCategory:UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
        notificationCategory.identifier = "INVITE_CATEGORY"
        notificationCategory.setActions([replyAction], forContext: UIUserNotificationActionContext.Default)

        //registerting for the notification.
        application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes:[.Sound, .Alert, .Badge], categories: nil))
    }
    else
    {
       //do iOS 7 stuff, which is pretty much nothing for local notifications.
    }
    return true
}

斯威夫特 3.2

if(UIApplication.instancesRespond(to: #selector(UIApplication.registerUserNotificationSettings(_:)))){
     let notificationCategory:UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
     notificationCategory.identifier = "INVITE_CATEGORY"
     notificationCategory.setActions([replyAction], forContext: UIUserNotificationActionContext.Default)

     //registerting for the notification.
        application.registerUserNotificationSettings(UIUserNotificationSettings(types:[.sound, .alert, .badge], categories: nil))
}
else{
        //do iOS 7 stuff, which is pretty much nothing for local notifications.
    }

Objective C 语法也非常相似。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    }
    // Override point for customization after application launch.
    return YES;
}

要检查当前注册的通知类型,您可以使用 UIApplication 类的方法,

- (UIUserNotificationSettings *)currentUserNotificationSettings

因此,如果用户对您的应用程序说“不”,那么此函数应该返回一个不带任何类型的设置。

我写了一篇关于这个的教程,你可以看看here http://thecodeninja.tumblr.com/post/89942124085/notifications-in-ios-8-part-1-using-swift-what-is.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

请求用户允许在 iOS 8 中接收 UILocalNotifications 的相关文章

  • 从底部加载导航视图控制器

    我有四个 ViewControllers 其中 ViewControllers 使用以下方式加载UINavigationController 我能够一一切换到每个 ViewController 问题是 由于我使用的是 NavigationC
  • 如何在当前时间添加时间

    我对这个问题很困惑 我想抓取当前时间 而不是根据条件 我想将所需的时间添加到当前时间 例如 current time 06 47 10 or should i hv to change this format to 2011 03 26 0
  • UISlider 拇指中心位于轨道的起点和终点

    默认行为UISlider是它的拇指没有集中在轨道的开始 结束处 就像下面这样 我想修改它的行为以获得 拇指的中心可以位于起点或终点 我试图用空来覆盖开始 结束UIView 效果是看起来几乎没问题 但是拇指有阴影 显示了我在某些位置的黑客攻击
  • 修改曝光持续时间并返回 AVCaptureExposureModeContinouslyAutoExposure 后出现奇怪的行为

    我正在开发一个应用程序 该应用程序通过 iOS 8 中引入的新 API 公开相机的手动控制 并且我正在使用这个示例应用程序 https developer apple com library ios samplecode AVCamManu
  • 延迟推送通知并检查用户是否启用它

    我开发了一个应用程序 它围绕推送通知构建 仅当用户达到注册过程的某个阶段时 应用程序才会请求通知权限 我已经设法做到了以下几点 该应用程序维护一个NSUserDefaults变量 指示是否需要在启动时注册推送 默认情况 不需要 当注册达到该
  • 设置应用程序默认的iOS本地通知样式

    从 iOS 5 开始 有两种通知样式 横幅和警报 旧 样式 用户可以在设置中为每个应用程序设置使用哪种样式 但是 现在默认情况似乎是通知以横幅样式显示 我使用本地通知来提醒 现在 将发生的事件 横幅出现后不久就会消失 而且还不够明显 人们可
  • 使用 NSOutputStream 通过套接字发送数据的正确方法

    我刚刚开始在 iOS 上进行套接字编程 我正在努力确定 的使用NSStreamEventHasSpaceAvailable活动为NSOutputStreams 一方面 苹果官方文档 清单2 https developer apple com
  • 显示键盘时检测 UITextView 中属性文本的点击

    这是一个补充问题我之前的一个回答 https stackoverflow com a 32262426 3681880对这个问题检测 iOS 中 UITextView 中属性文本的点击 https stackoverflow com que
  • UICollectionView cellForItemAtIndexPath 未注册单元格

    我正在尝试使用UICollectionViewCell 因为我想显示的只是一张图像 我可以使用将图像添加到单元格中UIColor colorWithImage on the UICollectionViewCell s contentVie
  • 我应该使用 NSUserDefaults 还是 plist 来存储数据?

    我将存储一些字符串 也许 10 20 个 我不确定是否应该使用 NSUserDefaults 来保存它们 或者将它们写到 plist 中 什么被认为是最佳实践 NSUserDefaults 似乎代码行数较少 因此实现速度更快 我想补充一点
  • 如何向用户显示我的App当前的项目版本?

    我想将当前版本添加到我的应用程序的 关于 部分 如所附屏幕截图所示 Apple 提供版本控制 如何在您的应用程序中显示这些设置 经过进一步的搜索和测试 我自己找到了解决方案 NSDictionary infoDictionary NSBun
  • 核心数据模型设计

    假设我有一个关于烹饪食谱的应用程序 具有两个基本功能 第一个涉及我正在准备的当前食谱 第二个存储了我决定保存的食谱 标准场景 我目前的食谱是 芝士蛋糕 RecipeDetailViewController我可以看到我为此食谱添加的当前成分
  • 在 iOS 上自动启动 Google Authenticator 应用

    是否有支持在 iOS 上启动 Google Authenticator 的方式 我想让客户更轻松地打开应用程序并复制基于时间的代码 然后再将其粘贴回我的应用程序 我凭经验发现这个 Swift 代码将启动该应用程序 UIApplication
  • 如何禁用 UITextView 上的键盘?

    我在 xib 上的 iPad 应用程序中使用了文本视图 我在上面写了一些文字 现在 当应用程序运行并且用户正在阅读该文本时 如果他不小心触摸了屏幕 则会出现键盘 我想禁用键盘弹出 我该怎么做呢 尝试关闭可编辑模式 textView edit
  • iOS 是否有像 Android 一样的应用内更新功能?

    我为 Android 和 iOS 开发了一个移动应用程序 现在每周我们都会发布 2 个更新 大多数时候 Android 和 iOS 用户会停止应用程序的自动更新 但是 如果有重要更新或错误修复或新功能 那么我们必须要求用户更新应用程序以获得
  • Visual Studio Taco - Remotebuild 将不再部署到远程设备

    直到最近 2016 年 9 月 15 日左右 我还能够使用 VS2015 以及最新版本的 TACO 和 Remotebuild 来构建 Cordova 项目并将其部署到远程设备 iPhone 6 我现在运行的是 ios 10 并更新了 iT
  • 如何单击“取消”按钮退出搜索?

    我有一个带有取消按钮的搜索栏 但是当我单击 取消 按钮时 它不会关闭搜索栏 如何使单击 取消 时将搜索栏返回到第一个状态 如果您有任何疑问 请询问我 您需要实现 UISearchBarDelegate class ViewControlle
  • 制作我自己的UIControlEvent,并触发它?

    我在视图控制器中创建了一个自定义的 UIView 类 我想让这个类可重用 所以不想将其构建为仅与这 1 个视图控制器一起使用 正因为如此 我think告诉我的视图控制器用户已与该类交互的最好方法是以某种方式创建我自己的 UIControlE
  • 如何同时关闭 UIAlertController 和键盘?

    我创建了一个注册表单UIAlertController并使用了该方法addTextFieldWithConfigurationHandler添加文本字段 但有一个小问题 当表单显示时 键盘和模式会以流畅的动画出现 关闭表单时 模态消失fir
  • 在 Swift 中解码 JSON Web 令牌

    尝试在 Swift 中解码 JWT 有效负载 但遇到了很大的困难 static func decodePayload tokenstr String splitting JWT to extract payload let arr spli

随机推荐

  • 我可以将函数名称存储在最终的哈希图中以供执行吗?

    我正在构建一个管理控制器 其工作方式类似于 Flex 4 5 中的终端模拟器 服务器端是Tomcat服务器上的Red5 使用Java编程语言 当用户在其文本输入中输入命令时 该命令会发送到 red5 在 red5 中 我检查该命令是否存在
  • 如何替换 WiX 安装过程中使用的计算机 + 磁盘图标?

    是否可以使用 WiX 3 5 替换 msiexec 在安装过程中显示的古老计算机 磁盘映像 如果是这样怎么办 我目前没有使用 WixUI 我愿意使用它 只要我能获得简单的 零点击的安装体验 我已经尝试了此页面上建议的所有 WixVariab
  • Screeps 分数/模块已重置

    昨天我在第一张地图上的分数是1800 现在没有更多分数了 这个分数怎么会被删除呢 此外 我的脚本 模块也被删除了 幸运的是我将它们保存在本地 是否依赖cookies什么的 发生了什么 在模拟室中 您的模块和分数存储在浏览器中localSto
  • 作为图形执行的一部分,动态捕获 TensorFlow 中的异常

    例如 这QueueBase dequeue函数可以提高OutOfRangeError我将从Python中收到的异常Session run称呼 有什么方法可以捕获图表内的异常 类似于tf cond 例如 就像是 result tf on ex
  • 我无法使 Highcharts phantomJs 导出服务器工作

    非常感谢 我想设置 phantomjs Highcharts 导出服务器 它应该接受 json 选项作为输入和输出 jpeg 图像文件 这是我所做的 我从此存储库下载服务器端 js 代码 https github com highslide
  • 使用 jQuery 从 HTML 中删除数据属性

    似乎无法让这个工作 我有一个隐藏某些链接的页面 加载 DOM 后 我使用 jQuery 来切换其中一些元素 这是通过使用数据属性来驱动的 如下所示 div class d btn div class hidden button 然后 我有代
  • 如何计算特定国家的利润中位数

    大家好 我是 R 新手 我正在尝试计算数据框中特定国家 地区的利润中位数 我尝试了以下方法 但它对我不起作用 data Forbes2000 package HSAUR median Forbes2000 sales country Uni
  • switch case 中的枚举引用

    enum Color RED GREEN BLUE class SwitchEnum public static void main String args Color c Color GREEN switch c case RED Sys
  • 该服务器的证书无效

    我知道如果我使用以下 nsurlconnectiondelegate 它将被修复 连接 willSendRequestForAuthenticationChallenge 连接 canAuthenticateAgainstProtectio
  • Java I/O 类和性能

    阅读 Java 思维 第四版 我对 I O 操作性能有一些疑问 我读到最好将 InputStream 对象 包装 在 BufferedInputStream 中 但在我看来 我看不出有任何区别 即文件操作不是已经缓冲了吗 文件缓冲写入有什么
  • 无法在 React 组件类中使用 Arrow 函数 [重复]

    这个问题在这里已经有答案了 我已经开始了一个项目 我在前端使用 React JS 在后端使用 Node js 我使用 webpack 来打包 JS 文件 我使用了 babel 以及其他必要的东西 当我在 React 类中使用箭头函数时 它会
  • 如何将 SKSpriteNode 以 PNG 图像保存到相机胶卷?

    我正在尝试将 SKSpriteNode 转换为具有相机胶卷透明度的 PNG 图像 这会保存图像 但不具有透明度 let image UIImage cgImage spriteNode texture cgImage UIImageWrit
  • php从html字符串中提取第一个图像,删除所有图像标签,并截断html字符串

    我在数据库中保存了tinymce编辑器的html内容 所以我想在php页面上显示这个html内容 但以漂亮的方式 我想首先检查 html 字符串中是否存在图像 如果存在则首先在 php 页面中显示它 然后我想在图像右侧显示一些文本 截断前
  • 什么模式最适合开发规则/决策引擎[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 类范围内的闭包

    根据我的理解 函数和类作用域的行为几乎相同 gt gt gt def x a 123 print locals gt gt gt x a 123 gt gt gt class x a 123 print locals a 123 modul
  • 在 Matlab 中将绘图保存为 PNG [重复]

    这个问题在这里已经有答案了 我有一个绘制时间序列的函数 现在我想将其保存为图像 请问该怎么做 function TimeSeriesImages a b c d e f g h i j k l x a b c d e f g h i j k
  • 无法在 neovim nightly 中从剪贴板粘贴

    卸载后latest并安装了nightly我无法从剪贴板粘贴 仔细检查我的init vim for set clipboard unnamedplus 有什么建议吗 5月21日更新 按照马特的评论 运行 checkhealth provide
  • 如何修复 CloudRun 错误“请求因没有可用实例而中止”

    我正在使用托管 CloudRun 来部署容器concurrency 1 部署后 我将并行触发四个长时间运行的请求 大多数时候 一切都工作正常 但偶尔 我会在几秒钟内面临来自其中一个节点的 500 条消息 日志仅提供主题中提供的错误消息 使用
  • 如果启动计算引擎实例失败如何收到错误

    我正在使用 PHP 使用以下代码启动一个实例 function startInstance g project g instance g zone client new Google Client client gt setApplicat
  • 请求用户允许在 iOS 8 中接收 UILocalNotifications

    我已经在应用程序委托中使用以下命令设置了本地通知 void applicationDidEnterBackground UIApplication application UILocalNotification notification U