首页 iOS..& Swift Books 按照教程推送通知

4
Xcode项目设置 由Scott Grosch撰写

在开始发送和接收推送通知之前,首先需要确保您的项目设置为此!

打开Xcode并创建一个新的 iOS. 应用程序 项目。选择 Swifui. 作为 界面SWIFTUI APP. 为了 生命周期。您可以取消选中项目创建屏幕底部的复选标记,因为您不需要核心数据或项目中的任何测试。在糟糕的日子中,这是您必须使用Apple设置自定义配置文件以启用推送通知的那一点。幸运的是,随着当前的工具链,这是现在的自动化。

添加能力

要告诉Xcode,您将在此项目中使用推送通知,只需遵循这四个简单的步骤,以便它可以为您处理注册:

  1. 按⌘+ 1(或 查看▸导航器▸项目)打开 项目导航员 然后单击顶部大多数项目(即您的项目)。
  2. 选择 目标, 不是 the project.
  3. 打开 签署& Capabilities tab.
  4. 点击 +能力 button.
  5. 搜索并选择 推送通知 从弹出的菜单中弹出。如果您没有看到推送通知能力,则您不使用付费Apple开发人员帐户。仔细检查您选择了正确的 团队 并检查您是否有效 供应档案 为您的团队和捆绑ID。
  6. 通知 推送通知 能力在您的签名信息下方添加。

如果您现在要返回成员中心并查看您的配置文件,您会看到已启用推送通知,专门为此项目生成了一个。好吧,这很容易让你想知道为什么苹果从一天没有让它变得容易!

注册通知

您已告诉Apple您将使用推送通知。接下来,您必须添加所需的代码以准备您的应用程序以接收推送通知。随着推送通知是一个选项功能,您必须请求用户权限启用它们。

import UIKit
import UserNotifications

class AppDelegate: NSObject, UIApplicationDelegate {
  func application(_ application: UIApplication,
                   didFinishLaunchingWithOptions launchOptions:
                        [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UNUserNotificationCenter.current().requestAuthorization(options: [
      .badge, .sound, .alert
    ]) { granted, _ in
      guard granted else { return }

      DispatchQueue.main.async {
        application.registerForRemoteNotifications()
      }
    }

    return true
  }
}
@UIApplicationDelegateAdaptor(AppDelegate.self)
private var appDelegate

临时授权

当应用程序首次启动时,就像上面一个上面的警报就像一个用户稍微举动到用户。他们为什么要问这个?你要发送什么类型的数据?如果您与朋友和同事交谈,您可能会发现一个令人惊讶的人,尤其是老年人,只是拒绝所有通知。

关键警报

There’s another type of authorization that you might need to request, depending on the type of app you’re building. If your app has something to do with health and medicine, home security, public safety or anything else that may have the need to present a notification even if the user declined alerts, you can ask Apple to configure critical alerts via the .criticalAlert enum case. Critical alerts will bypass Do Not Disturb and ringer switch settings as well as always play a sound… even a custom sound.

获取设备令牌

如果您的应用程序成功注册通知,iOS将调用另一个委托方法为您提供设备令牌。令牌是一个不透明的数据类型,它是全局唯一的,并识别与APNS的一个应用程序组合。

func application(
  _ application: UIApplication, 
  didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  let token = deviceToken.reduce("") { $0 + String(format: "%02x", $1) }
  print(token)
}

func application(
  _ application: UIApplication,
  didFailToRegisterForRemoteNotificationsWithError error: Error) {
  print(error)
}

关键点

  • 您必须告诉Xcode,推送通知将成为您项目的一部分;按照本章的步骤操作,以便Xcode可以为您处理注册。
  • 您必须添加所需的代码以准备应用程序以接收推送通知。
  • 推送通知是一个选项功能,因此您必须请求用户权限启用它们。
  • 为了避免jarring通知,第一次用户打开应用程序,请使用 临时授权 因此,通知默默地传送到用户的通知中心,而无需要求许可。
  • 为了 关键警报 覆盖用户拒绝的警报,您必须申请来自Apple的特殊权利,以便由于其破坏性的性质而启用它们。
  • 已成功注册应用程序以进行通知后,iOS将调用委托方法,为您的应用程序提供设备令牌。永远不要对令牌的长度做出假设,或者尝试将令牌链接到特定用户。
  • Specify in your 应用程序 struct implementation that you’re using an app delegate.

然后去哪儿?

此时,您在技术上完成了使您的应用程序能够接收和显示推送通知所需的一切。在下一章中,你会得到你的 身份验证令牌 来自Apple,使Apple的服务器允许您发送通知,您将最终发送您的第一个推送通知!

有一个技术问题?想报告一个错误吗? 您可以向官方书籍论坛中的书籍作者提出问题和报告错误 这里.

有反馈分享在线阅读体验吗? 如果您有关于UI,UX,突出显示或我们在线阅读器的其他功能的反馈,您可以将其发送到设计团队,其中表格如下所示:

© 2021 Razeware LLC

您可以免费读取,本章的部分显示为 混淆了 文本。解锁这本书,以及我们整个书籍和视频目录,带有Raywenderlich.com的专业订阅。

现在解锁

要突出或记笔记,您需要在订阅中拥有这本书或自行购买。