gpt4 book ai didi

ios - 提供具有适当权利的配置文件可防止推送通知注册

转载 作者:行者123 更新时间:2023-11-29 02:20:52 25 4
gpt4 key购买 nike

概述

我们目前有两个应用程序,仅在配置配置文件上有所不同。应用程序一使用其自己的配置文件正常工作。应用程序二是应用程序一的副本,也有自己的应用程序 ID 和配置文件,具有完全相同的权利。唯一的区别是应用程序二不会注册通知。

为了让事情变得有趣,如果我们获取应用程序一的配置文件并配置应用程序二来使用它们,那么应用程序二将成功注册推送通知。将应用程序二切换回其自己的配置文件并停止注册。

有问题

应用程序二将触发 registerForRemoteNotifications 方法,该方法随后应调用 application:didFailToRegisterForRemoteNotificationsWithError:application:didRegisterForRemoteNotificationsWithDeviceToken: 但两者都不会这些都是被诱发的。

将应用程序二切换为使用应用程序一的配置文件时,会调用 application:didRegisterForRemoteNotificationsWithDeviceToken: 方法,并且手机注册成功。

测试和调试

1. 经过一些研究,我了解到这可能是由于测试设备造成的,在这种情况下,iPhone 6 Plus 可能无法联系 APNS(Apple 推送通知服务)。好吧,这不是本例中的问题,因为当配置文件切换时,同一测试设备可以成功注册。其他测试 iPhone 也无法注册。

2.我已多次重新创建配置文件。我还尝试了各种组合,让 xCode 自动生成它们以及在 xCode 中显式下载和配置适当的配置文件。

3.我已从设备中删除了所有配置配置文件,以确保不存在导致问题的过时或配置错误的配置文件。

4. 我创建了一个具有相同产品名称并使用罪魁祸首配置文件的空白 iOS 项目。添加了上述必要的方法,但注册通知仍然没有成功。

5.清理了我的构建目录并从测试设备中完全删除了应用程序。

6. 创建了 *.ipa 文件并确认 entitlements are correct .

7. 为推送通知服务器生成私钥,因为我认为在生成 key 之前手机可能无法注册。

最佳答案

上述问题的解决方案是以适当的顺序调用正确的方法。最初假设在 UIApplication 对象上调用 - (void)registerForRemoteNotifications 足以唤起适当的成功或失败方法。然而,事实并非如此。

开发人员必须首先调用 UIApplication 对象上的 - (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings 方法来为各种类型的通知注册应用程序。只有这样做之后,应用程序才能调用 UIApplication 对象的 - (void)registerForRemoteNotifications 方法来注册远程通知。

在这种特殊情况下,来自应用程序 1 的供应配置文件有效,因为该应用程序之前在旧版本的 iOS 下运行时已被授予权限。

来自UIApplication文档

If you want your app’s push notifications to display alerts, play sounds, or perform other user-facing actions, you must call the registerUserNotificationSettings: method to request the types of notifications you want to use.

关于ios - 提供具有适当权利的配置文件可防止推送通知注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com