You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取设备令牌以实现聊天场景下的个性化推送通知

获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 07:44:54