首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS APNS 推送 Invalid Token 錯誤排查:Token 格式與環境匹配

     編輯:程式設計綜合問答

現象

C# PushSharp 推送報 APNS NotificationFailureException -> 8 : Invalid token,Token 64 位十六進制字符串。

常見原因排查

  1. Token 格式錯誤:APNS 需 **32 字節 (64 十六進制字符) 二進制**,PushSharp .ForDeviceToken() 接受十六進制字符串會自動轉換,**不要手動截取/轉換**。
  2. 環境不匹配:
    • 開發環境 (Sandbox) 證書 + 開發環境 Token → 必須用 push.RegisterAppleService(settings, false) (isSandbox=true)。
    • 生產環境 證書 + 生產環境 Token → isSandbox=false。
    • 混用會導致 Invalid Token。
  3. Token 過期/失效:用戶卸載 App/重裝/系統重置會生成新 Token,舊 Token 失效,需服務端更新。
  4. Bundle ID 不匹配:證書綁定的 Bundle ID 與 App 實際不一致。

調試步驟

  1. 確認 production_identity.p12 是生產證書,密碼正確。
  2. 日誌記錄發送的 Token 原文,對比設備實際獲取的 Token。
  3. 用 openssl pkcs12 -in production_identity.p12 -nodes -out cert.pem 導出證書檢查 Subject/CN。
  4. 嘗試簡單測試:push.QueueNotification(new AppleNotification().ForDeviceToken(token).WithAlert("test")); 觀察詳細錯誤碼。

代碼關鍵點


// 正確註冊生產環境服務
push.RegisterAppleService(new ApplePushChannelSettings(appleCert, keyWord, false)); // false = 生產環境
// Token 直接傳入原始 64 位十六進制字符串
push.QueueNotification(new AppleNotification()
    .ForDeviceToken(token)  // 不要截取/轉換
    .WithAlert(message));

**核心:Token 原樣傳入,證書環境與 Token 環境嚴格對應,Bundle ID 一致。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved