如何从系统推送通知设置页跳转至应用内个人推送通知设置页
你提到的系统通知设置页内跳转应用内通知设置的按钮,是iOS、安卓高版本系统提供的原生能力,无需手动绘制按钮,按对应平台规则配置即可生效,分平台实现方式如下:
安卓端实现
该功能在安卓12(API 32)及以上版本原生支持,官方定义为通知设置偏好入口,配置后系统会自动在应用的系统通知设置页添加对应跳转按钮:
- 第一步:在
AndroidManifest.xml中为你要跳转的应用内通知设置Activity添加专属intent-filter:
<activity android:name=".your.package.NotificationSettingsActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" /> </intent-filter> </activity>
- 第二步:打包安装应用后,系统会自动识别该配置,在通知设置页顶部生成对应入口按钮,点击即可直接跳转你声明的Activity。
- 低版本安卓兜底方案:可以在应用内部的设置页添加引导跳转系统通知设置的入口,代码示例:
// 跳转当前应用的系统通知设置页 val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, packageName) } startActivity(intent)
iOS端实现
该功能在iOS 15.4及以上版本原生支持,配置后系统会自动在应用的系统通知设置页底部添加「应用内通知设置」入口:
- 第一步:在App启动完成后,通知权限注册逻辑中添加自定义跳转配置,示例代码(Swift):
import UserNotifications @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { let center = UNUserNotificationCenter.current() center.delegate = self // 注册通知权限 center.requestAuthorization(options: [.alert, .badge, .sound]) { granted, _ in guard granted else { return } // iOS 16+ 直接配置应用内设置页的自定义URL Scheme if #available(iOS 16.0, *) { center.notificationSettingsURL = "yourapp://settings/notifications" } } return true } }
- 第二步:在Xcode项目的Info.plist中配置对应的自定义URL Scheme,确保上一步填写的
yourapp协议可以正常跳转到应用内的指定设置页。 - 低版本iOS兜底方案:在应用内部添加引导跳转系统通知设置的入口,代码示例:
if let settingsUrl = URL(string: UIApplication.openSettingsURLString) { UIApplication.shared.open(settingsUrl) }
注意:两个平台的入口按钮均为系统自动渲染,无需自定义样式,会自动适配当前系统的设计规范和语言设置。
内容的提问来源于stack exchange,提问作者Султан Алиев
相关产品推荐
相关产品推荐

