无法设置一个 AWS SNS 来同时服务于开发 (APNS_SANDBOX) 和生产 (APNS)
Fail to setup one AWS SNS to serve both development (APNS_SANDBOX) and production (APNS)
也许这不受 AWS 支持,但是,在 Apple Developer Console 上创建认证时,我选择了“Apple Push Notification service SSL (Sandbox & Production)”。我用这个认证来建立一个 SNS。如果我选中“用于沙箱中的开发”复选框,则通知将在通过 XCODE 而不是通过 testflight 编译应用程序时起作用,如果我使用此认证并取消选中此复选框,则通知将在 testflight 中起作用,但从XCODE.
我的印象是这种新型认证可以用于开发和生产,所以我有点困惑。 AWS 似乎知道我的应用程序是为开发还是生产而编译的。
有没有办法在 iOS 上为开发和生产设置一个 SNS?
我今天刚刚和我的 AWS 团队一起经历了这个。 (我是一名 iOS 开发人员,如果我没有使用正确的 AWS 术语,请原谅我。希望它足够接近。)
新证书可用于沙盒和生产。但是,必须为 每个 创建一个 AWS SNS 端点(ARN?)。正如您所说,如果您选中“用于沙箱中的开发”复选框,它将在 运行 从 Xcode 时开始工作,但它不适用于 TestFlight 应用程序。是 either/or,不是两者。
要使其正常运行,您需要创建两个 SNS 端点。您可以为两个端点使用相同的“Apple Push Notification service SSL (Sandbox & Production)”APNS 证书,但只选中其中一个端点中的“Used for development in sandbox”。
我不知道这是否适用于你的情况,但对于我的应用程序,我们的 AWS 团队在我们的设备注册中添加了一个“开发”标志 API 这样他们就可以区分是否发送通知 APNS 或 APNS_SANDBOX 端点。
对于可能需要更多说明的任何人,我将尝试解释您可能遇到的问题,然后给出解决方案。
问题陈述:
您为 Apple iOS/VIOP/MacOS 创建了一个 AWS SNS 平台应用程序并勾选了“用于沙盒中的开发”。
你最终得到一个在字符串中某处有“APNS_SANDBOX”的 arn。
然后使用平台 arn 注册设备端点。请注意,这些设备是使用 Xcode (debug/release) 而不是 App Store 上的设备构建的。
有效,正在发送通知。
然后您将您的应用程序发布到 App store 或 TestFlight,突然发现通知没有被发送。
最重要的是,您注意到您的端点状态显示为已禁用,现在您想知道为什么您的村民今天决定找您麻烦。
解法:
您需要创建另一个 AWS SNS 平台应用程序,但这次不要勾选“用于沙箱中的开发”
确保使用与沙盒相同或不同的名称。主要区别在于端点中的 APNS_SANDBOX 或 APNS。
现在进入您的代码,将仅包含 APNS 的 arn 用于您提交到 App Store 的应用程序。
干杯
也许这不受 AWS 支持,但是,在 Apple Developer Console 上创建认证时,我选择了“Apple Push Notification service SSL (Sandbox & Production)”。我用这个认证来建立一个 SNS。如果我选中“用于沙箱中的开发”复选框,则通知将在通过 XCODE 而不是通过 testflight 编译应用程序时起作用,如果我使用此认证并取消选中此复选框,则通知将在 testflight 中起作用,但从XCODE.
我的印象是这种新型认证可以用于开发和生产,所以我有点困惑。 AWS 似乎知道我的应用程序是为开发还是生产而编译的。
有没有办法在 iOS 上为开发和生产设置一个 SNS?
我今天刚刚和我的 AWS 团队一起经历了这个。 (我是一名 iOS 开发人员,如果我没有使用正确的 AWS 术语,请原谅我。希望它足够接近。)
新证书可用于沙盒和生产。但是,必须为 每个 创建一个 AWS SNS 端点(ARN?)。正如您所说,如果您选中“用于沙箱中的开发”复选框,它将在 运行 从 Xcode 时开始工作,但它不适用于 TestFlight 应用程序。是 either/or,不是两者。
要使其正常运行,您需要创建两个 SNS 端点。您可以为两个端点使用相同的“Apple Push Notification service SSL (Sandbox & Production)”APNS 证书,但只选中其中一个端点中的“Used for development in sandbox”。
我不知道这是否适用于你的情况,但对于我的应用程序,我们的 AWS 团队在我们的设备注册中添加了一个“开发”标志 API 这样他们就可以区分是否发送通知 APNS 或 APNS_SANDBOX 端点。
对于可能需要更多说明的任何人,我将尝试解释您可能遇到的问题,然后给出解决方案。
问题陈述:
您为 Apple iOS/VIOP/MacOS 创建了一个 AWS SNS 平台应用程序并勾选了“用于沙盒中的开发”。
你最终得到一个在字符串中某处有“APNS_SANDBOX”的 arn。
然后使用平台 arn 注册设备端点。请注意,这些设备是使用 Xcode (debug/release) 而不是 App Store 上的设备构建的。
有效,正在发送通知。
然后您将您的应用程序发布到 App store 或 TestFlight,突然发现通知没有被发送。
最重要的是,您注意到您的端点状态显示为已禁用,现在您想知道为什么您的村民今天决定找您麻烦。
解法:
您需要创建另一个 AWS SNS 平台应用程序,但这次不要勾选“用于沙箱中的开发”
确保使用与沙盒相同或不同的名称。主要区别在于端点中的 APNS_SANDBOX 或 APNS。
现在进入您的代码,将仅包含 APNS 的 arn 用于您提交到 App Store 的应用程序。
干杯