ios待办应用

131 阅读5分钟

主要功能

  • 添加待办:添加文字、选择提醒时间、记录位置、选择照片
  • 展示待办:展示文字、展示位置、展示图片、提醒时间、是否完成
  • 删除待办:删除待办
  • 设置待办状态: 设置待办是否完成

实现以上功能需要用到的相关功能需要FaceID 解锁、消息提醒、位置信息、选择照片。下面来介绍下相关功能框架。

LocalAuthentication 本地身份验证

LocalAuthentication 是 iOS 和 iPadOS 中提供的用于本地身份验证的框架。它可以用于验证用户的身份,例如使用 Touch ID 或 Face ID。

LocalAuthentication 提供了以下几种身份验证方式:

  • Touch ID:使用 Touch ID 进行身份验证。
  • Face ID:使用 Face ID 进行身份验证。
  • Device Passcode:使用设备的密码进行身份验证。

要使用 LocalAuthentication,需要导入 LocalAuthentication 框架。

Swift

import LocalAuthentication

然后,可以使用 LAContext 类来进行身份验证。

Swift

let context = LAContext()

LAContext 类提供了以下方法来进行身份验证:

  • canEvaluatePolicy(_:error:):检查设备是否支持指定的身份验证方式。
  • evaluatePolicy(_:localizedReason:reply:):开始身份验证。

canEvaluatePolicy(_:error:) 方法用于检查设备是否支持指定的身份验证方式。如果设备支持,则返回 true。如果设备不支持,则返回 false。

evaluatePolicy(_:localizedReason:reply:) 方法用于开始身份验证。policy 参数指定要使用的身份验证方式。localizedReason 参数指定身份验证的原因。reply 参数用于处理身份验证结果。

以下是一个示例代码,用于使用 Touch ID 进行身份验证:

Swift

let context = LAContext()

if context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: nil) {
    context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "请使用 Touch ID 进行验证") { success, error in
        if success {
            print("身份验证成功")
        } else {
            print("身份验证失败")
        }
    }
} else {
    print("设备不支持 Touch ID")
}

上述代码将检查设备是否支持 Touch ID。如果支持,则将开始 Touch ID 身份验证。如果身份验证成功,则将会打印 "身份验证成功" 消息。如果身份验证失败,则将会打印 "身份验证失败" 消息。

如果设备不支持 Touch ID,则将会打印 "设备不支持 Touch ID" 消息。

CoreLocation 定位功能

CoreLocation 是 iOS 和 iPadOS 中提供的用于定位的框架。它可以用于获取设备的位置信息,例如经纬度、海拔、方向等。

CoreLocation 提供了以下几种定位方式:

  • GPS:使用 GPS 进行定位。
  • WiFi:使用 WiFi 进行定位。
  • 基站:使用基站进行定位。
  • 蓝牙:使用蓝牙进行定位。

要使用 CoreLocation,需要导入 CoreLocation 框架。

Swift

import CoreLocation

然后,可以使用 CLLocationManager 类来获取设备的位置信息。

Swift

let locationManager = CLLocationManager()

CLLocationManager 类提供了以下方法来获取设备的位置信息:

  • requestWhenInUseAuthorization():请求在应用程序使用时获取位置信息的权限。
  • requestAlwaysAuthorization():请求始终获取位置信息的权限。
  • startUpdatingLocation():开始获取位置信息。
  • stopUpdatingLocation():停止获取位置信息。

requestWhenInUseAuthorization() 方法用于请求在应用程序使用时获取位置信息的权限。

requestAlwaysAuthorization() 方法用于请求始终获取位置信息的权限。

startUpdatingLocation() 方法用于开始获取位置信息。

stopUpdatingLocation() 方法用于停止获取位置信息。

以下是一个示例代码,用于使用 GPS 进行定位:

Swift

let locationManager = CLLocationManager()

locationManager.requestWhenInUseAuthorization()

locationManager.desiredAccuracy = kCLLocationAccuracyBest

locationManager.startUpdatingLocation()

// 处理位置更新
locationManager.delegate = self

// 位置更新委托
extension ViewController: CLLocationManagerDelegate {
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        if let location = locations.first {
            print("经度:(location.coordinate.longitude)")
            print("纬度:(location.coordinate.latitude)")
        }
    }
}

上述代码将请求在应用程序使用时获取位置信息的权限。然后,将位置信息的精度设置为最佳精度。最后,开始获取位置信息。

locationManager.delegate = selfViewController 类设置为位置更新委托。

locationManager(_:didUpdateLocations:) 方法将会在位置信息更新时调用。在该方法中,可以获取最新的位置信息。

以下是代码的运行效果:

经度:121.463692
纬度:31.217561

CoreLocation 还提供了以下几个常用类:

  • CLLocationCoordinate2D:表示经纬度的结构体。
  • CLLocation:表示位置信息的类。
  • CLHeading:表示方向信息的类。
  • CLPlacemark:表示地标信息的类。

您可以根据自己的需要使用 CoreLocation 来获取设备的位置信息。

UserNotifications 消息通知

UserNotifications 是 iOS 和 iPadOS 中提供的用于发送通知的框架。它可以用于向用户发送警报、提醒、消息等。

UserNotifications 提供了以下几种通知类型:

  • Alert:显示警报通知。
  • Badge:增加应用程序的徽章数。
  • Sound:播放通知声音。
  • Content-available:通知应用程序有新内容可用。
  • NotificationServiceExtension:由应用程序的扩展处理通知。

要使用 UserNotifications,需要导入 UserNotifications 框架。

Swift

import UserNotifications

然后,可以使用 UNNotificationRequest 类来创建通知。

Swift

let notificationRequest = UNNotificationRequest(identifier: "myNotification", content: UNMutableNotificationContent(), trigger: UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false))

UNNotificationRequest 类提供了以下属性:

  • identifier:通知的标识符。
  • content:通知的内容。
  • trigger:通知的触发器。

identifier 属性用于标识通知。

content 属性用于设置通知的内容,包括标题、正文、附件等。

trigger 属性用于设置通知的触发器,例如在指定时间触发、在应用程序处于前台或后台触发等。

创建通知后,可以使用 UNUserNotificationCenter 类来发送通知。

Swift

UNUserNotificationCenter.current().add(notificationRequest)

UNUserNotificationCenter 类提供了以下方法:

  • add(_:):发送通知。
  • remove(_:):删除通知。
  • getPendingNotificationRequests():获取所有待处理的通知。

add(_:) 方法用于发送通知。

remove(_:) 方法用于删除通知。

getPendingNotificationRequests() 方法用于获取所有待处理的通知。

以下是一个示例代码,用于发送一个警报通知:

Swift

let notificationRequest = UNNotificationRequest(identifier: "myNotification", content: UNMutableNotificationContent(), trigger: UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false))

notificationRequest.content.title = "标题"
notificationRequest.content.body = "正文"

UNUserNotificationCenter.current().add(notificationRequest)

上述代码将创建一个标题为 "标题"、正文为 "正文" 的警报通知,并在 5 秒后触发。

以下是通知的运行效果:

标题
正文

UserNotifications 还提供了以下几个常用类:

  • UNNotificationContent:表示通知内容的类。
  • UNNotificationTrigger:表示通知触发器的类。
  • UNNotificationAction:表示通知操作的类。
  • UNNotificationCategory:表示通知类别的类。

您可以根据自己的需要使用 UserNotifications 来发送通知。

主要代码

需要使用上面的三个框架,需要在info.list中配置相关权限

Privacy - Location When In Use Usage Description 定位权限

Privacy - Face ID Usage Description Face ID

Privacy - Reminders Usage Description 消息提醒

身份识别相关代码

Snipaste_2024-01-05_14-01-38.png

定位相关代码

Snipaste_2024-01-05_14-05-07.png

提醒设置相关代码

Snipaste_2024-01-05_14-14-02.png

添加图片和展示相关代码

Snipaste_2024-01-05_14-23-23.png

效果展示