@capacitor/device
裝置 API 會公開裝置的內部資訊,例如型號和作業系統版本,以及使用者資訊,例如唯一 ID。
安裝
npm install @capacitor/device
npx cap sync
Apple 隱私權資訊清單要求
Apple 強制規定應用程式開發人員現在必須指定核准的 API 使用原因,以增強使用者隱私權。在 2024 年 5 月 1 日之前,將應用程式提交至 App Store Connect 時必須包含這些原因。
當您在應用程式中使用此特定外掛程式時,您必須在 /ios/App
中建立 PrivacyInfo.xcprivacy
檔案,或使用 VS Code 擴充功能來產生該檔案,並指定使用原因。
如需有關如何執行此操作的詳細步驟,請參閱 Capacitor 文件。
對於此外掛程式,必要的字典索引鍵為 NSPrivacyAccessedAPICategoryDiskSpace,建議的原因為 85F4.1。
PrivacyInfo.xcprivacy 範例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>85F4.1</string>
</array>
</dict>
</array>
</dict>
</plist>
外掛程式使用範例
import { Device } from '@capacitor/device';
const logDeviceInfo = async () => {
const info = await Device.getInfo();
console.log(info);
};
const logBatteryInfo = async () => {
const info = await Device.getBatteryInfo();
console.log(info);
};
API
getId()
getId() => Promise<DeviceId>
傳回裝置的唯一識別碼。
傳回: Promise<DeviceId>
自 1.0.0
getInfo()
getInfo() => Promise<DeviceInfo>
傳回有關基礎裝置/作業系統/平台的資訊。
傳回: Promise<DeviceInfo>
自 1.0.0
getBatteryInfo()
getBatteryInfo() => Promise<BatteryInfo>
傳回有關電池的資訊。
傳回: Promise<BatteryInfo>
自 1.0.0
getLanguageCode()
getLanguageCode() => Promise<GetLanguageCodeResult>
取得裝置目前的語言地區代碼。
傳回: Promise<GetLanguageCodeResult>
自 1.0.0
getLanguageTag()
getLanguageTag() => Promise<LanguageTag>
取得裝置目前的語言地區標籤。
傳回: Promise<LanguageTag>
自 4.0.0
介面
DeviceId
屬性 | 類型 | 描述 | 自 |
---|---|---|---|
identifier | string | 裝置可供應用程式使用的識別碼。此識別碼可能會在僅允許每個應用程式安裝 ID 的現代行動平台上變更。在 iOS 上,此識別碼是一個 UUID,可唯一識別應用程式廠商的裝置(閱讀更多)。在 Android 8+ 上,此識別碼是一個 64 位元的數字(以十六進位字串表示),對於應用程式簽署金鑰、使用者和裝置的每個組合而言都是唯一的(閱讀更多)。在 Web 上,會產生隨機識別碼並儲存在 localStorage 中供後續呼叫使用。如果 localStorage 無法使用,則每次呼叫時都會產生新的隨機識別碼。 | 1.0.0 |
DeviceInfo
屬性 | 類型 | 描述 | 自 |
---|---|---|---|
name | string | 裝置的名稱。例如,「John 的 iPhone」。僅在 iOS 和 Android 7.1 或以上版本中支援。在 iOS 16+ 上,這會傳回一般裝置名稱,而不會傳回適當的 權限。 | 1.0.0 |
model | string | 裝置型號。例如,「iPhone13,4」。 | 1.0.0 |
platform | 'ios' | 'android' | 'web' | 裝置平台(小寫)。 | 1.0.0 |
operatingSystem | OperatingSystem | 裝置的作業系統。 | 1.0.0 |
osVersion | string | 裝置作業系統的版本。 | 1.0.0 |
iOSVersion | number | iOS 版本號碼。僅在 iOS 上可用。多部分版本號碼會縮減為一個以兩位數填補的整數,例如:"16.3.1" -> 160301 | 5.0.0 |
androidSDKVersion | number | Android SDK 版本號碼。僅在 Android 上可用。 | 5.0.0 |
manufacturer | string | 裝置的製造商。 | 1.0.0 |
isVirtual | boolean | 應用程式是否在模擬器/模擬器中執行。 | 1.0.0 |
memUsed | number | 目前應用程式使用的大約記憶體,以位元組為單位。除以 1048576 即可取得使用的 MB 數。 | 1.0.0 |
diskFree | number | 在作業系統的正常資料儲存路徑上可用的可用磁碟空間,以位元組為單位。在 Android 上,它會傳回保留核心 Android 作業系統的「系統」分割區上的可用磁碟空間。在 iOS 上,此值不準確。 | 1.0.0 |
diskTotal | number | 作業系統正常資料儲存路徑的總大小,以位元組為單位。在 Android 上,它會傳回保留核心 Android 作業系統的「系統」分割區上的磁碟空間。 | 1.0.0 |
realDiskFree | number | 在正常資料儲存上可用的可用磁碟空間,以位元組為單位。 | 1.1.0 |
realDiskTotal | number | 正常資料儲存路徑的總大小,以位元組為單位。 | 1.1.0 |
webViewVersion | string | Web 檢視瀏覽器版本 | 1.0.0 |
BatteryInfo
屬性 | 類型 | 描述 | 自 |
---|---|---|---|
batteryLevel | number | 指出電池充電量的百分比(0 到 1)。 | 1.0.0 |
isCharging | boolean | 裝置是否正在充電。 | 1.0.0 |
GetLanguageCodeResult
屬性 | 類型 | 描述 | 自 |
---|---|---|---|
value | string | 兩個字元的語言代碼。 | 1.0.0 |
LanguageTag
屬性 | 類型 | 描述 | 自 |
---|---|---|---|
value | string | 傳回格式正確的 IETF BCP 47 語言標籤。 | 4.0.0 |
類型別名
OperatingSystem
'ios' | 'android' | 'windows' | 'mac' | 'unknown'