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

如何在Xamarin.Forms中获取推送通知所需的Device Token?

Got it, let's walk through exactly how to grab your device token for push notifications and get it set up in Urban Airship. I'll cover the most common platforms since the process varies a bit:

iOS Device Token 获取步骤
  1. 先配置推送权限

    • 在你的Info.plist文件中添加推送权限描述:
      <key>NSRemoteNotificationUsageDescription</key>
      <string>We need push notifications to send you important updates</string>
      
    • 在AppDelegate或SceneDelegate中请求用户授权:
      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
          UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in
              if granted {
                  DispatchQueue.main.async {
                      application.registerForRemoteNotifications()
                  }
              }
          }
          return true
      }
      
  2. 获取并格式化Device Token
    系统会在成功注册推送后回调下面的方法,这里把二进制Data转换成你需要的十六进制字符串格式:

    func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        // 转换成无空格、无尖括号的十六进制字符串(和你给的示例格式一致)
        let tokenString = deviceToken.map { String(format: "%02.2hhx", $0) }.joined()
        print("Ready-to-use Device Token: \(tokenString)")
        // 你可以在这里把token上传到服务器,或者直接复制出来用
    }
    

    注意:如果这个方法没触发,检查你的Apple推送证书是否配置正确,以及用户是否允许了推送权限。

Android Device Token 获取步骤

Android用的是FCM(Firebase Cloud Messaging)token,Urban Airship依赖这个来推送:

  1. 配置Firebase依赖
    确保你的项目已经集成了Firebase Messaging,添加依赖到build.gradle(Module级别):

    implementation 'com.google.firebase:firebase-messaging:23.3.1'
    implementation 'com.urbanairship.android:urbanairship-fcm:16.1.0'
    
  2. 获取FCM Token
    用异步方法获取token,拿到后直接用:

    import com.google.firebase.messaging.FirebaseMessaging
    
    FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
        if (!task.isSuccessful) {
            println("Fetching FCM token failed: ${task.exception}")
            return@addOnCompleteListener
        }
        // 拿到的token就是可以直接填入Urban Airship的格式
        val fcmToken = task.result
        println("Ready-to-use FCM Token: $fcmToken")
    }
    
跨平台(Flutter)示例

如果你用Flutter开发,直接用Urban Airship的官方插件:

  1. 先添加依赖到pubspec.yaml:
    dependencies:
      urbanairship_flutter: ^16.1.0
    
  2. 初始化后获取token:
    import 'package:urbanairship_flutter/urbanairship_flutter.dart';
    
    void getDeviceToken() async {
        String? token = await Airship.push.getToken();
        print("Ready-to-use Token: $token");
    }
    
在Urban Airship中填入Token的步骤
  1. 登录Urban Airship控制台,进入你的应用项目
  2. 导航到 Push > Audience
  3. 找到 Add Device(或者类似选项,不同版本界面可能略有不同)
  4. 把你拿到的token(iOS的十六进制字符串/Android的FCM token)粘贴到输入框,保存即可
  5. 之后就可以针对这个设备发送测试推送了
常见坑点提醒
  • iOS的token不要带尖括号:有些日志里会输出<555D...>,你只需要复制中间的十六进制字符
  • 确保Urban Airship控制台的应用配置和你的项目一致(比如iOS的Bundle ID、Android的包名)
  • 如果推送失败,检查设备网络是否正常,以及Urban Airship的推送权限是否开启

内容的提问来源于stack exchange,提问作者Nanji Mange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:49:09