我正在尝试使用iMobileDevice
从我的iPhone中获取尽可能多的信息,但是我无法在libimobiledevice
API或其他地方找到要搜索的支持键的列表。我知道here之类的地方存在并且很有帮助,但是使用lockdownd_get_value(LockdownClientHandle ld, string domain, string KEY, out PListHandle value)
时并不全都支持。这就是我的使用方式。
ReadOnlyCollection<string> udids;
int count = 0;
var idevice = LibiMobileDevice.Instance.iDevice;
var lockdown = LibiMobileDevice.Instance.Lockdown;
var ret = idevice.idevice_get_device_list(out udids, ref count);
if (ret == iDeviceError.NoDevice)
{
// Not actually an error in our case
return;
}
ret.ThrowOnError();
// Get the device name
foreach (var udid in udids)
{
string t1;
PlistHandle tested1;
//Find serial number in plist
lockdown.lockdownd_get_value(lockdownHandle, null, "SerialNumber", out
tested1);
//Get string values from plist
tested1.Api.Plist.plist_get_string_val(tested1, out t1);
Console.WriteLine(t1);
}
而且,是否有所有支持的键的参考列表?
您可以使用ideviceinfo命令行实用工具来探索锁定显示的键。 ideviceinfo --help
列出了已知的域,其中包括com.apple.disk_usage
,听起来很有趣。通常,指定一个域但省略一个键将为您提供该域中所有键的列表及其值:
让我们看看能为我们带来什么:
> ideviceinfo -q com.apple.disk_usage
AmountDataAvailable: 24795447296
AmountDataReserved: 209715200
AmountRestoreAvailable: 30147182592
CalculateDiskUsage: OkilyDokily
NANDInfo: AQAA...
TotalDataAvailable: 25086046208
TotalDataCapacity: 26836963328
TotalDiskCapacity: 32000000000
TotalSystemAvailable: 0
TotalSystemCapacity: 5142020096
在您的情况下,您似乎正在寻找TotalDiskCapacity
域中的com.apple.disk_usage
键。您可以使用lockdown.lockdown_get_value(lockdownHandle, "com.apple.disk_usage", "TotalDiskCapacity", out tests1)
获取应包含请求值的属性列表句柄。
我还发现您可以通过AFC访问disk_usage信息:
LockdownServiceDescriptorHandle ldsHandle;
AfcClientHandle afcClient;
idevice.idevice_new(out deviceHandle, udid).ThrowOnError();
lockdown.lockdownd_client_new_with_handshake(deviceHandle, out lockdownHandle,
"Quamotion").ThrowOnError();
lockdown.lockdownd_start_service(lockdownHandle, "com.apple.afc", out ldsHandle);
ldsHandle.Api.Afc.afc_client_new(deviceHandle, ldsHandle, out afcClient);
ldsHandle.Api.Afc.afc_get_device_info_key(afcClient, "FSTotalBytes", out totalSize);