使用 Firebase 和 APNs 身份验证密钥进行生产推送通知

2024-03-23

在 TestFlight 上测试我的应用程序时,我注意到我没有收到推送通知。

我已确认,当从 Xcode 加载构建时,我可以收到从云函数和 firebase 控制台发起的通知。

我引用了其他类似的问题,但没有一个反映我正在处理的确切问题。在 Firebase 中配置远程通知时,我使用的是APNs 验证密钥,我也包括了.p12开发和生产文件。但是,那.p12文件显示为灰色并列为非活动状态,因为 APNs 身份验证密钥已设置。

在我的 Apple Developer 帐户下证书、标识符和配置文件,我已确保我的 APNs Auth Key 存在于左侧Keys部分。我也设置了开发者和生产 SSL 证书在我的应用程序 ID 中并验证它们是否被列为“已启用”。我还验证了我有一个“活动”的 iOS 分发配置文件。

这是一个很难调试的问题,因为 Xcode 构建可以工作,而 TestFlight 构建却不能。我知道这个问题涉及生产环境与开发环境,但我不确定如何解决该问题。

该方法在 Xcode 构建和所有相关联的版本中被调用UserNotifications & Messaging正在调用委托方法。我正在运行 iOS 10.3 并且有FirebaseAppDelegateProxyEnabled set to NO in my info.plist.

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
     Messaging.messaging().setAPNSToken(deviceToken, type: MessagingAPNSTokenType.sandbox)
     Messaging.messaging().setAPNSToken(deviceToken, type: MessagingAPNSTokenType.prod)
}

对我来说,解决方法是停止使用 MessagingAPNSTokenType.sandbox 或 .prod,而只需使用:

Messaging.messaging().setAPNSToken(deviceToken, type: .unknown)

在之前的应用程序中,我使用了:

if Config.isDebug {
    tokenType = MessagingAPNSTokenType.sandbox
} else {
    tokenType = MessagingAPNSTokenType.prod
}
Messaging.messaging().setAPNSToken(deviceToken, type: tokenType)

并设置 Config 以依赖于 Xcode 中的构建方案。现在它似乎不适用于产品。在 Firebase 上,我现在使用APNS Key https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token_based_connection_to_apns,而不是旧式的 Prod 和 Dev 证书。这可能有所作为。我看到Firebase 文档 https://firebase.google.com/docs/reference/swift/firebasemessaging/api/reference/Enums/MessagingAPNSTokenType现在也说:

如果令牌类型设置为 UNKNOWN Firebase Messaging 将隐式 尝试从配置中找出实际的令牌类型 轮廓。除非您确实需要指定类型,否则应该使用 而是 APNSToken 属性。

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

使用 Firebase 和 APNs 身份验证密钥进行生产推送通知 的相关文章

随机推荐

  • Plon 和 Asp.Net 集成

    How to 制作一个 Asp Net 应用程序来识别经过身份验证的克隆用户 他 她的 ID 角色和任何其他可用数据 反之亦然 在我的 asp net 应用程序中显示 plone 内容或在 plone 中显示一些特定于应用程序的数据 从 A
  • ColdFusion:在 CFC 中省略变量关键字是否安全?

    在 ColdFusion 组件 CFC 中 是否有必要对变量范围的变量使用完全限定名称 如果我改变这个 我会给自己带来麻烦吗
  • 如何在 TypeScript 中迭代通用对象的键?

    我需要迭代一个仅键入为 对象 的大对象 它包含未知数量的相同类型的对象 在较早的帖子中 我找到了在自定义 Symbol iterator 函数中使用生成器来使大对象可通过 for of 循环进行迭代的解决方案 但在我看来 现在已经是 201
  • numpy `arange` 超过最终值

    我原以为 numpy 的arange start end 生成 start end 范围内的值 下面的示例表明这并不总是正确的 最终值大于end import numpy as np start 2e9 end start 321 step
  • 导入文件时如何跳过第一行

    我正在尝试导入一个 xlsx文件输入Laravel5 7版本使用Maatwebsite excel版本 3 1 我想要实现的是跳过文件的第一行 以避免在数据库中导入列标题 我尝试使用版本 2 语法 调用skip method public
  • 强制从 US-ASCII 编码为 UTF-8 (iconv)

    我正在尝试将一堆文件从 US ASCII 转码为 UTF 8 为此 我使用 iconv iconv f US ASCII t UTF 8 file php gt file utf8 php 我的原始文件是 US ASCII 编码的 这使得转
  • WiX:旧版本不会在“添加/删除程序”列表中消失

    我有一个使用 WiX 安装和升级的 Windows 服务 效果很好 非常快 唯一的问题是 如果我从 1 0 升级到 1 1 两个副本在 添加 删除程序 列表中仍然有条目 那么 当我执行更新时 如何确保 WiX 删除 添加 删除程序 列表中旧
  • 使用 Chrome 开发者工具调试 onFocus 事件?断点后无法返回焦点

    我正在尝试调试 JavaScriptonFocus附加到页面上一堆文本框的事件 选择一个文本框然后按 Tab 键切换到下一个文本框时会出现此错误 我试图通过在其中放置一个断点来调试它onFocus使用 Chrome 开发者工具的事件 我面临
  • Prolog 时间重叠问题

    假设我有这个知识库 free ann slot time 8 0 time 9 0 free ann slot time 10 0 time 11 0 free bob slot time 7 0 time 8 30 free bob sl
  • Jenkins Copy Artifact 解析复制的构建 ID

    我在 Jenkins 2 73 1 中使用 在多分支管道中复制神器插件 https wiki jenkins io display JENKINS Copy Artifact Plugin要从其他两个管道获取最后成功的工件 请参阅我的 Je
  • 范围类型如何影响 EntityQuery 对象的重用方式

    for UserList userList UserList Component getInstance UserList class ScopeType METHOD userList getUserByEmailAddress emai
  • iPhone 旋转和全屏视频

    我遇到了一个奇怪的问题 需要帮助解决 我的应用程序始终以纵向模式运行 我明确希望它是这样的 在应用程序的一处 我有一个 UIWebView 它工作得很好 正如预期的那样 此 Web 视图并非始终显示 而是动态添加到主视图并根据用户操作删除
  • 如何加载本地JSON文件?

    我正在尝试通过 jquery 加载本地 JSON 文件 代码工作正常 但数据在数组中不可用 getJSON ajax data myjasonfile json function json console log json 我的控制台仅显示
  • 函数指针和返回类型转换

    假设我有一个执行一些副作用然后返回答案的函数 int foo perform some side effect return 42 我要绑定foo到函数指针 但我对答案不感兴趣 只是副作用 void bar foo 然而 这似乎是一个类型错
  • 正则表达式提取“--!!”之后的所有文本在 R dplyr 中

    我试图在 R 中使用 dplyr 来提取由变量的某些实例过滤的数据框中变量字符串后面的子字符串name在下面的例子中 我正在尝试将所需的结果传递到一个名为的新变量中income rent 我是正则表达式的新手 我的尝试是 income ca
  • 如何在 Perl 中进行字母数字排序?

    我有一个如下所示的文件 80 1p21 81 19q13 82 6p12 3 83 Xp11 22 84 3pter q21 86 3q26 33 87 14q24 1 q24 2 14q24 14q22 q24 88 1q42 q43 8
  • 在 GCP App Engine 标准环境上安装 cmake 的解决方法

    我需要安装dlib封装在应用程序引擎标准对于需要的应用程序cmake 以下是我在安装时遇到的错误 我尝试添加cmake and cmake setup在requirements txt中但没有用 ERROR Failed to build
  • 在 c# 2008 中使用正则表达式验证的电话号码验证?

    我想验证这种格式的电话号码 即 919981424199 91231456789 我正在使用 Asp net c 2008 来开发网站 为此 我使用了正则表达式验证控件 gt 属性 gt 验证表达式 0 9 0 9 但这接受号码为91998
  • Emacs 确定键盘布局

    Emacs 有没有办法检测当前的键盘布局 我经常用英语和德语写文本 切换 Win 操作系统 键盘布局 但是 某些功能 例如 C Y 应始终位于相同的物理键上 无论我当前使用哪种语言进行输入 Thanks 考虑使用M x set input
  • 使用 Firebase 和 APNs 身份验证密钥进行生产推送通知

    在 TestFlight 上测试我的应用程序时 我注意到我没有收到推送通知 我已确认 当从 Xcode 加载构建时 我可以收到从云函数和 firebase 控制台发起的通知 我引用了其他类似的问题 但没有一个反映我正在处理的确切问题 在 F