以某种方式我在应用程序中丢失了推送通知。我不明白

问题描述 投票:0回答:1

我将推送通知作为我的配置文件的一部分。

我选择了远程通知和推送通知作为所有构建类型的功能。

还有其他需要做的事情吗?现在,当我构建应用程序时,我什至看不到应用程序设置中的可用通知。它完全消失了。

我正在使用react native btw ..认为不重要,只是将其扔在那里。我觉得我想念那些深埋的环境之一。

我尝试删除并重新安装应用程序。重新启动手机。清洁项目。删除并重新添加功能。这是怎么回事?

ios xcode push-notification entitlements
1个回答
0
投票

有两种类型的远程通知:后台更新通知(其有效载荷包含content-available: 1的那些)和常规推送通知。前一种类型始终是静默的,用户将看不到任何内容,而后者是用户在锁定屏幕上收到消息的位置。

对于iOS应用,始终允许后台更新通知,而无需用户授予您任何权限。仅当您要传递将向用户发出警报的通知时,用户才必须首先向您授予权限。因此,启用这些功能时,您是在告诉系统您的应用程序应该接收通知,但是系统不知道哪种类型,因此它允许您注册到APNS并在后台接收通知。仅这样做就意味着您的用户将不会看到提示他们允许您的应用程序发送通知的警报,并且您的应用程序将没有任何通知设置-用户无法关闭甚至不知道的内容。

为了提示您的用户授予您权限,请在“设置”应用中查看权限设置,并能够发送带有声音和消息的通知,您必须在代码中的某些时候使用以下命令向系统请求此类权限:以下代码:

iOS 9:

UIApplication.shared.registerUserNotificationSettings(UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil))

然后在您的应用程序委托中实施func application(_ application: UIApplication, didRegister notificationSettings: UIUserNotificationSettings),请检查用户是否已授予您权限。 (检查notificationSettings.types是否为空。如果为空,则用户已拒绝它。)

iOS 10及更高版本:

import UserNotifications

UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted in
    if (granted) {
        // ...
    }
}

[当您执行这些代码时,系统会立即向用户显示警报,要求他们授予或拒绝您的应用程序许可,以显示包含警报,声音的通知,并在您的应用程序图标上显示徽章。选择之后,用户可以进入“设置”应用并查看/更改他们的选择,现在您将看到您的应用具有通知设置。

P.S。由于用户以后可以修改和更改其通知设置到您的应用程序,因此您永远不应在应用程序中存储授予的状态。而是使用适当的API每次需要时获取当前状态。对于iOS 9,请检查UIApplication.shared.currentUserNotificationSettings?.types是否为空(为空意味着您没有权限),在iOS 10及更高版本上,请使用UNUserNotificationCenter.current().getNotificationSettings { settings in ... }检查设置中是否包含任何类型。 (可选)调用requestAuthorization也可以直接返回您授予的布尔值,并且如果用户已经收到警报并做出选择,则requestAuthorization方法将直接为您提供用户的选择,而无需再次询问。

TL; DR

您尚未向用户询问权限。他们将不会看到权限警报,并且您将无法在“设置”应用中找到该应用的通知设置。
© www.soinside.com 2019 - 2024. All rights reserved.