JSPM

  • Created
  • Published
  • Downloads 390
  • Score
    100M100P100Q100932F
  • License Apache-2.0

iOS Utility Library

Package Exports

  • ioslib
  • ioslib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ioslib) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

iOS Utility Library

This is a library of utilities for dealing programmatically with iOS applications, used namely for tools like Hyperloop and Titanium SDK.

ioslib supports Xcode 6 and newer.

Installation

From NPM:

npm install ioslib

Examples

Detect all the connected iOS devices:

var ioslib = require('ioslib');

ioslib.device.detect(function (err, devices) {
    if (err) {
        console.error(err);
    } else {
        console.log(devices);
    }
});

Install an application on device

var deviceUDID = null; // string or null to pick first device

ioslib.device.install(deviceUDID, '/path/to/name.app', 'com.company.appname')
    .on('installed', function () {
        console.log('App successfully installed on device');
    })
    .on('appStarted', function () {
        console.log('App has started');
    })
    .on('log', function (msg) {
        console.log('[LOG] ' + msg);
    })
    .on('appQuit', function () {
        console.log('App has quit');
    })
    .on('error', function (err) {
        console.error(err);
    });

Launch the iOS Simulator

ioslib.simulator.launch(null, function (err, simHandle) {
    console.log('Simulator launched');
    ioslib.simulator.stop(simHandle, function () {
        console.log('Simulator stopped');
    });
});

Launch, install, and run an application on simulator

var simUDID = null; // string or null to pick a simulator

ioslib.simulator.launch(simUDID, {
        appPath: '/path/to/name.app'
    })
    .on('launched', function (msg) {
        console.log('Simulator has launched');
    })
    .on('appStarted', function (msg) {
        console.log('App has started');
    })
    .on('log', function (msg) {
        console.log('[LOG] ' + msg);
    })
    .on('error', function (err) {
        console.error(err);
    });

Force stop an application running on simulator

ioslib.simulator.launch(simUDID, {
        appPath: '/path/to/name.app'
    })
    .on('launched', function (simHandle) {
        console.log('Simulator launched');
        ioslib.simulator.stop(simHandle).on('stopped', function () {
            console.log('Simulator stopped');
        });
    });

Find a valid device/cert/provisioning profile combination

ioslib.findValidDeviceCertProfileCombos({
    appId: 'com.company.appname'
}, function (err, results) {
    if (err) {
        console.error(err);
    } else {
        console.log(results);
    }
});

Detect everything

ioslib.detect(function (err, info) {
    if (err) {
        console.error(err);
    } else {
        console.log(info);
    }
});

Detect iOS certificates

ioslib.certs.detect(function (err, certs) {
    if (err) {
        console.error(err);
    } else {
        console.log(certs);
    }
});

Detect provisioning profiles

ioslib.provisioning.detect(function (err, profiles) {
    if (err) {
        console.error(err);
    } else {
        console.log(profiles);
    }
});

Detect Xcode installations

ioslib.xcode.detect(function (err, xcodeInfo) {
    if (err) {
        console.error(err);
    } else {
        console.log(xcodeInfo);
    }
});

Running Tests

For best results, connect an iOS device.

To run all tests:

npm test

To see debug logging, set the DEBUG environment variable:

DEBUG=1 npm test

To run a specific test suite:

npm run-script test-certs

npm run-script test-device

npm run-script test-env

npm run-script test-ioslib

npm run-script test-provisioning

npm run-script test-simulator

npm run-script test-xcode

Contributing

Interested in contributing? There are several ways you can help contribute to this project.

New Features, Improvements, Bug Fixes, & Documentation

Source code contributions are always welcome! Before we can accept your pull request, you must sign a Contributor License Agreement (CLA). Please visit https://tidev.io/contribute for more information.

Donations

Please consider supporting this project by making a charitable donation. The money you donate goes to compensate the skilled engineeers and maintainers that keep this project going.

Code of Conduct

TiDev wants to provide a safe and welcoming community for everyone to participate. Please see our Code of Conduct that applies to all contributors.

Security

If you find a security related issue, please send an email to security@tidev.io instead of publicly creating a ticket.

Stay Connected

For the latest information, please find us on Twitter: Titanium SDK and TiDev.

Join our growing Slack community by visiting https://slack.tidev.io!

Titanium is a registered trademark of TiDev Inc. All Titanium trademark and patent rights were transferred and assigned to TiDev Inc. on 4/7/2022. Please see the LEGAL information about using our trademarks, privacy policy, terms of usage and other legal information at https://tidev.io/legal.