https://github.com/thebeet/idevicekit
NodeJs wrapper for libimobiledevice
https://github.com/thebeet/idevicekit
ios libimobiledevice nodejs
Last synced: 5 months ago
JSON representation
NodeJs wrapper for libimobiledevice
- Host: GitHub
- URL: https://github.com/thebeet/idevicekit
- Owner: thebeet
- License: other
- Created: 2016-12-02T06:16:00.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-06-11T10:48:58.000Z (about 5 years ago)
- Last Synced: 2025-10-30T14:54:04.781Z (7 months ago)
- Topics: ios, libimobiledevice, nodejs
- Language: JavaScript
- Homepage:
- Size: 48.8 KB
- Stars: 29
- Watchers: 3
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
NodeJs wrapper for libimobiledevice
## Requirements
* [Node.js][nodejs] >= 6.0
* libimobiledevice & ideviceinstaller
```bash
brew install libimobiledevice
brew install ideviceinstaller
```
## Getting started
Install via NPM:
```bash
npm install --save idevicekit
```
## API
### idevicekit.listDevices()
Gets the list of currently connected devices.
* Returns: `Promise`
* Resolves with: `devices` An array of device's serial
### idevicekit.getProperties(serial, [option])
Retrieves the properties of the device identified by the given serial number. This is analogous to `ideviceinfo`.
* **serial** The serial number of the device. Corresponds to the device ID in `idevicekit.listDevices()`.
* **option** Optional. The following options are supported, use `ideviceinfo --help` to learn more
- **simple** When `true`, use a simple connection to avoid auto-pairing with the device, Default: false
- **domain** set domain of query to NAME. Default: None
* Returns: `Promise`
* Resolves with: `properties` An JSON Object of device's properties.
### idevicekit.getPackages(serial, [option])
Retrieves the list of packages present on the device. This is analogous to `ideviceinstaller`.
* **serial** The serial number of the device. Corresponds to the device ID in `idevicekit.listDevices()`.
* **option** Optional. The following options are supported, use `ideviceinstaller --help` to learn more
- **list** List apps, possible options:
- **user**: list user apps only (this is the default)
- **system**: list system apps only
- **all**: list all types of apps
* Returns: `Promise`
* Resolves with: `packages` An array of app package
### idevicekit.screencap(serial)
Takes a screenshot in PNG format using `idevicescreenshot`.
* Returns: `Promise`
* Resolves with: `screencap` An PNG stream.
### idevicekit.install(serial, ipa)
Installs the IPA on the device, This is analogous to `ideviceinstaller -i `
* Returns: `Promise`
* Resolves with: `output` output of install command
### idevicekit.syslog(serial)
Retrieves syslog on the device, This is analogous to `idevicesyslog`
* **serial** The serial number of the device. Corresponds to the device ID in `idevicekit.listDevices()`.
* Returns: `Promise`
* Resolves with: `emitter` emit "log" event when log come
idevicesyslog will continue running until a 'close' event emit to emitter
### idevicekit.reboot(serial)
reboot using `idevicediagnostics restart`.
* Returns: `Promise`
* Resolves with: `success` True if success
### idevicekit.shutdown(serial)
reboot using `idevicediagnostics shutdown`.
* Returns: `Promise`
* Resolves with: `success` True if success
## shortcut API
### idevicekit.getBasicInformation(serial, [option])
Basic device information from Apple, such as CPU, RAM, Official Name
### getResolution(serial)
### getStorage(serial)
### getBattery(serial)
## Example
```js
let co = require('co');
let idevicekit = require('./index');
let fs = require('fs');
co(function* () {
let devices = yield idevicekit.listDevices();
for (let device of devices) {
let properties = yield idevicekit.getProperties(device);
let battery = (yield idevicekit.getBattery(device)).level;
let resolution = yield idevicekit.getResolution(device);
let status = yield idevicekit.getDeveloperStatus(device);
console.log(`${device}: ${properties['DeviceName']}`);
console.log(` model: ${properties['ProductType']}`);
console.log(` battery: ${battery}`);
console.log(` resolution: ${resolution['width']}x${resolution['height']}`);
console.log(` status: ${status}`);
let screenshotStream = yield idevicekit.screencap(device);
screenshotStream.pipe(fs.createWriteStream(device + '.png'));
idevicekit.syslog(device).then((emitter) => {
emitter.on('log', (data) => {
console.log(JSON.stringify(data));
});
setTimeout(() => {
emitter.emit('close');
}, 10000);
});
}
}).catch((err) => {
console.log(err);
});
```