如何在iOS中显示带有天气信息的通知横幅?

时间:2018-08-07 02:33:53

标签: ios swift apple-push-notifications mobile-application

我想添加一个通知横幅,作为对现有github应用程序的补充。每当温度上升到90°F或32°C以上,而下降到50°F或10°C以下时,此横幅将显示警告。我正在使用Swift 4和xcode 9.4,并且是新的应用程序开发。

我已经研究了this guidethese instructions来构建一个简单的天气应用程序,但是它们没有描述如何随温度添加通知。是否可以通过应用程序访问天气信息或有关温度的信息。

我已经从this post阅读到有关使用UNUserNotificationCenterDelegate的信息,并希望找到一种简单显示温度警告的方法。我将不胜感激任何可以说明如何实现此目标的代码段。

2 个答案:

答案 0 :(得分:3)

您需要在应用程序处于前台状态且温度高于32°C或低于10°C时触发本地通知,从ios 10苹果允许您在应用程序处于运行状态时在应用程序内发送本地通知在前台运行。因此,以下是在您的应用程序处于后台状态时创建本地通知的步骤

  • AppDelegate application:didFinishLaunchingWithOptions:中的请求通知权限

    UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge], completionHandler: {didAllow, error in })

  • 设置UNUserNotificationCenter.current().delegate = self

  • 在您的应用程序委托中实施UNUserNotificationCenterDelegate协议

  • 覆盖UNUserNotificationCenterDelegate的willpresent方法

    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { completionHandler([.alert, .badge, .sound]) }

  • 当温度高于32°C或低于10°C时会触发通知

    let center = UNUserNotificationCenter.current() let content = UNMutableNotificationContent() content.title = "Simple Notification" content.subtitle = "" content.body = "Notification is here" content.sound = UNNotificationSound.default() let trigger = UNTimeIntervalNotificationTrigger(timeInterval:2.0, repeats: false) let request = UNNotificationRequest(identifier: "ContentIdentifier", content: content, trigger: trigger)

    此代码创建一个本地通知,该通知将在2秒后显示给用户

有关Notification的更多信息,请阅读Apple文档 UNUserNotificationCenter UNUserNotificationCenterDelegate

答案 1 :(得分:3)

在考虑发送通知之前,您需要执行几个步骤。但是让我们在开始时就清楚这一点:

  • 您将无法在通知中心中获得持续的通知,尤其是在iOS 12以上的情况下。用户始终可以从您的应用中关闭通知或所有通知。
  • 无法从操作系统访问天气,您需要依靠openweathermap.org之类的第三方服务

没有代码片段,因为它听起来并不简单。我将为您提供以下步骤列表,您可以为此使用Google教程或使用我将提供的链接:

  1. CLLocationManagerAlways选项一起使用,您将需要此选项来根据背景中的用户位置检查温度:以下是一个有用的链接,该链接如何获取权限和授权:https://www.techotopia.com/index.php/A_Swift_Example_iOS_8_Location_Application 。这将是您第一次实施挑战的完美解决方案。稍后您可以看看:Significant Location Change
  2. 获取用户位置后,您需要解析API的响应,并且为此提供了许多教程,但是我建议使用全新的Codable方法:https://medium.com/xcblog/painless-json-parsing-with-swift-codable-2c0beaeb21c1 < / li>
  3. 当您处理完1)和2)并且选择不进行重大位置更改时,您需要后台应用程序刷新,并且这里有来自Apple的不错的摘录:https://developer.apple.com/documentation/uikit/core_app/managing_your_app_s_life_cycle/preparing_your_app_to_run_in_the_background/updating_your_app_with_background_app_refresh
  4. 然后,您可以发送符合您条件https://www.techotopia.com/index.php/An_iOS_10_Local_Notification_Tutorial的通知

快乐编码