1. 程式人生 > >iOS開發之DeviceCheck框架的應用

iOS開發之DeviceCheck框架的應用

iOS開發之DeviceCheck框架的應用

      DeviceCheck框架是iOS 11後提供的一個記錄使用者裝置的工具框架。

在實際應用中,經常會遇到需要識別使用者裝置的需求,例如某些免費試用的應用程式,會根據裝置判斷使用者是否已經試用過。Apple基於保護使用者隱私的原則,開發者不能直接獲取使用者裝置的相關標識資訊,iOS 11後,Apple提供了DeviceCheck框架用來提供裝置檢查功能。

    DeviceCheck非常簡單,大部分裝置檢查的邏輯要交給服務端呼叫Apple提供的介面來實現。

    DeviceCheck框架中只提供了一個類:DCDevice。其中定義如下:

@interface DCDevice : NSObject
// 類屬性 獲取例項物件
@property (class, readonly) DCDevice *currentDevice;
// 檢查框架是否可用
@property (getter=isSupported, readonly) BOOL supported;
// 請求Token
- (void)generateTokenWithCompletionHandler:(void(^)(NSData * _Nullable token, NSError * _Nullable error))completion;
@end

DeviceCheck框架的核心在於獲取裝置的Token資料,拿到Token資料後可以仿照服務端傳送推送的相關流程進行使用者裝置檢查資訊的讀或寫。詳細文件地址如下:

https://developer.apple.com/documentation/devicecheck/accessing_and_modifying_per-device_data

    使用token進行裝置檢查時需要傳送Query請求,引數如下:

    

在Apple返回的資料中會包含兩個二進位制的位和一個時間戳:

可以發現,其實Apple提供給開發者標記使用者裝置的能力十分有限,滿打滿算,開發者只能對使用者裝置標記4種狀態。通過兩個布林位,用來獲取當前裝置是否參加了活動或者是否已經使用過試用資格等等。開發者也可以對這兩個布林值進行修改,上傳請求的引數如下: