iOS Swift中能否无需注册推送通知即可自动获取device token(推送令牌)
iOS Swift开发无法不注册推送通知获取device token
- Apple官方设计中,device token是远程推送服务专属的设备唯一标识,仅在应用触发推送注册流程后才会生成返回,无任何公开API可以绕过推送注册流程直接获取该值。
- 你当前使用的回调是官方唯一的device token获取入口:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { ... }
仅当你完成以下两步操作后,才会触发该回调返回有效device token:
- 调用
UNUserNotificationCenter.current().requestAuthorization(options:completionHandler:)向用户申请推送通知权限 - 用户同意权限后,调用
UIApplication.shared.registerForRemoteNotifications()发起远程推送注册
- 如果你的使用场景不是推送,只是需要稳定的设备唯一标识,无需申请推送权限的话,可以使用
UIDevice.current.identifierForVendor作为替代,该值同一开发者账号下的应用在同一台设备上会返回相同标识,满足大多数设备标识需求。 - 注意:不要尝试通过私有API绕过流程获取device token,一旦被苹果检测到会直接被App Store拒绝上架
内容的提问来源于stack exchange,提问作者Dev Changela
相关产品推荐
相关产品推荐

