Web Sender App Development

Shawn Bow edited this page Jan 22, 2015 · 10 revisions

Currently Web Sender Apps are available on Firefox OS 2.2. Please download flint_sender_sdk.js and add it to Firefox OS app project.

Device Discovery

var deviceScanner = new FlintDeviceScanner();
// scan new deivces
deviceScanner.on('devicefound', function(device) {
    // get device's name
    var name = device.getName();
    // get Flint Service Url
    var url = device.getUrlBase();
    // get unique device ID
    var uniqueId = device.getUniqueId();
});
// device lost
deviceScanner.on('devicegone', function(device) {
});
// start scanning
deviceScanner.start();
// stop scanning
deviceScanner.stop();
// get device list
deviceScanner.getDeviceList();

Use FlintSenderManager

var senderManager = new FlintSenderManager(
    appid, // application ID
    'http://127.0.0.1:9431', // Flint Service url
    true // keep heartbeat with Flint Service
    );
// set Flint Service Url
senderManager.setServiceUrl(urlBase);
// get custom additional data from receiver
senderManager.getAdditionalData();
// or
senderManager.on('customDataavailable', function(customData) {
});

Establish communication

  • create MessageBus

    var bus = null;
    // create anonymous MessageBus
    bus = senderManager.createMessageBus();
    // create named MessageBus
    bus = senderManager.createMessageBus('namespace');    
    
  • listen event

    messageBus.on('message', function(message) {
        console.log(message);
    });
    
  • send message

    messageBus.send('some message');
    

Use WebRTC

  • create Peer

    var peer = senderManager.createPeer();
    
  • connect receiver

    // data connection
    senderManager.connectReceiverPeer(options);
    // stream call
    senderManager.callReceiverPeer(stream, options);
    

Application control

  • get application's state

    var callback = function(result, state, additionaldata) {
        // result:true means success,false means failure
        // state:application's state,could be 'stopped','starting' or 'running'
        // additionaldata:additional data from receiver
    };
    senderManager.getState(callback); // the first way
    senderManager.on('appstate', callback); // the second way
    
  • launch application

    var appInfo = {
        appUrl: url,
        useIpc: true or false,
        maxInactive: int
    };
    var callback = function(type, result, token) {
        // type:event type, 'app' + the name of api, for example, if you call launch(),the type is 'applaunch'
        // result:true means success,false means failure
        // token:Flint Service response a token to sender to indicate this request
    };
    //
    // launch application:
    //
    senderManager.launch(appInfo, callback); // the first way
    senderManager.launch(appInfo) // the second way
    senderManager.on('applaunch', callback);
    //
    // relaunch application:
    //
    senderManager.relaunch(appInfo, callback); //the first way
    senderManager.relaunch(appInfo) // the second way
    senderManager.on('apprelaunch', callback);
    //
    // join application:
    //
    senderManager.join(appInfo, callback); //the first way
    senderManager.join(appInfo) // the second way
    senderManager.on('appjoin', callback);
    
  • stop application

    var callback = function(type, result) {
        // type:event type, 'app' + the name of api, for example, if you call stop(),the type is 'appstop'
        // result:true means success,false means failure
    };
    //
    // stop application:
    //
    senderManager.stop(appInfo, callback); //the first way
    senderManager.on('appstop', callback); //the second way
    senderManager.stop(appInfo);
    //
    // disconnect from Flint Service but donot stop application:
    //
    senderManager.disconnect(appInfo, callback); //the first way
    senderManager.on('appdisconnect', callback); //the second way
    senderManager.disconnect(appInfo);
    

More sample code, please refer to:

  • Flint
    • [Developer's Guide](Developer Guide for Flint)
      • [Web Sender Apps](Web Sender App Development)
      • [Android Sender Apps](Android Sender App Development)
      • [iOS Sender Apps](iOS Sender App Development)
      • [Receiver Apps](Receiver Apps Development)
      • Chromecast App Porting
    • [API Libraries](API Libraries)
    • [Flint Protocol Docs](Flint Protocol Docs)
  • Matchstick
    • [Flashing Instructions](Flashing Instructions for Matchstick)
    • [Build Your Matchstick](Build Your Matchstick)
    • [Flashing Your Build](Flashing Your Build)
    • [Setup Your Matchstick](Setup Your Matchstick)
    • [Setup USB Mode](Setup USB Mode for Matchstick)
    • [Supported Media](Supported Media for Matchstick)
Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.