如何获取设备令牌以实现聊天场景下的个性化推送通知
获取FCM/OneSignal设备令牌用于聊天推送通知
FCM设备令牌获取方案
原生开发场景
- Android:在
FirebaseMessagingService的onNewToken回调中直接获取令牌,令牌更新时也会触发该方法:override fun onNewToken(token: String) { // 将此令牌上传至你的后端存储,用于后续推送 Log.d("FCM_TOKEN", token) } - iOS:在
AppDelegate的didRegisterForRemoteNotificationsWithDeviceToken方法中,将返回的Data格式设备令牌转换为字符串:func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let fcmToken = deviceToken.map { String(format: "%02.2hhx", $0) }.joined() // 存储或上传fcmToken到后端 print("FCM_TOKEN: \(fcmToken)") }
低代码平台场景(如OutSystems)
由于你提到了ClientInformation.id和停用的RemoteNotifications外部对象,建议使用平台官方提供的FCM集成组件:
- 查找平台内的FCM相关插件/模块,这类组件通常会封装好获取令牌的动作,直接调用即可得到有效的FCM推送令牌,而非设备唯一标识符。
OneSignal设备令牌获取方案
OneSignal SDK初始化完成后,可通过以下方法获取专属推送令牌:
- Android/Kotlin:
OneSignal.getDeviceState { deviceState -> deviceState?.pushToken?.let { token -> // 存储或上传OneSignal令牌 Log.d("ONESIGNAL_TOKEN", token) } } - iOS/Swift:
OneSignal.getDeviceState { deviceState in if let token = deviceState?.pushToken { print("ONESIGNAL_TOKEN: \(token)") } }
注意:OneSignal会自动对接FCM,如果你使用OneSignal作为推送中间件,存储OneSignal的令牌即可完成后续聊天消息推送。
关键注意事项
- 区分设备唯一ID与推送令牌:
ClientInformation.id是设备的固定标识,而推送令牌是FCM/OneSignal分配的动态标识,会因应用卸载重装、系统更新等情况刷新,需监听令牌更新事件并同步到后端。 - 确保应用已获取推送权限:Android 13+需申请
POST_NOTIFICATIONS权限,iOS需开启推送能力并请求用户授权,否则无法获取令牌和接收推送。
内容的提问来源于stack exchange,提问作者JOSE WILMER SANCHEZ DIAZ
相关产品推荐
相关产品推荐

