Xamarin.iOS iOS13 獲取DeviceToken


Xamarin.iOS iOS13 獲取DeviceToken

隨着蘋果iOS13系統的發布,DeviceToken的獲取方式發生了一定的變化。

iOS13之前獲取DeviceToken方法


public override void RegisteredForRemoteNotifications (
UIApplication application, NSData deviceToken)
{
    // Get current device token
    var DeviceToken = deviceToken.Description;
    if (!string.IsNullOrWhiteSpace(DeviceToken)) {
        DeviceToken = DeviceToken.Trim('<').Trim('>');
    }
}

這段代碼運行在 iOS 13 上已經無法獲取到准確的DeviceToken字符串了,iOS 13 通過deviceToken.Description獲取到的內容已經變了。

{length = 32, bytes = 0x14b54623 58494431 974ecc27 f44b1fdb ... 1dc9bc64 9d334520 }

iOS13之后獲取DeviceToken方法

public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
        {
            byte[] dataBytes = new byte[deviceToken.Length];
            System.Runtime.InteropServices.Marshal.Copy(deviceToken.Bytes, dataBytes, 0, Convert.ToInt32(deviceToken.Length));
            StringBuilder builder = new StringBuilder();
            foreach (var b in dataBytes)
            {
                builder.AppendFormat("{0:X2}", b);
            }
            DeviceToken = builder.ToString();
        }

經過以上處理后:

3FCF3268B7FCEF9C550F92D84632525F623B5A6C8BB3349B1F3845BB95B41992

如此即可正常獲取DeviceToken啦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM