Titanium V4PubNub Titanium V4 SDK 4.25.0

Into your resources folder of your Titanium App.


View Supported Platforms

PubNub Javascript SDK 4.25.0 has a distribution for Titanium which allows you to integrate PubNub to your mobile apps for iOS, Android and Mobile Web.

After downloading the source code and put this into the correct folder you can create an instance with simple lines of code in your app.js file.

var PubNub = require('pubnub');

var pubnub = new PubNub({
	subscribeKey: 'YOUR SUBSCRIBE KEY HERE',
	publishKey: 'YOUR PUBLISH KEY HERE'
});

That's it, you are ready to start using PubNub JS SDK.

var PubNub = require('pubnub');

var pubnub = new PubNub({
    subscribeKey: 'YOUR SUBSCRIBE KEY HERE',
    publishKey: 'YOUR PUBLISH KEY HERE'
});

function publishSampleMessage() {
    console.log("Since we're publishing on subscribe connectEvent, we're sure we'll receive the following publish.");
    var publishConfig = {
        channel : "hello_world",
        message : {
            title: "greeting",
            description: "hello world!"
        }
    }
    pubnub.publish(publishConfig, function(status, response) {
        console.log(status, response);
    })
}

pubnub.addListener({
    status: function (st) {
        if (st.category === "PNConnectedCategory") {
            publishSampleMessage();
        }
    },
    message: function (m) {
        console.log(m.message.title);
        console.log(m.message.description);
    },
    presence: function (ps) {
        console.log(ps);
    }
});

pubnub.subscribe({
    channels: ['hello_world']
});
In addition to the Hello World sample code, we also provide some copy and paste snippets of common API functions:

Instantiate a new Pubnub instance. Only the subscribeKey is mandatory. Also include publishKey if you intend to publish from this instance, and the secretKey if you wish to perform PAM administrative operations from this Titanium V4 instance.

 

It is not a best practice to include the secretKey in client-side code for security reasons.

When you init with secretKey, you get root permissions for the Access Manager. With this feature you don't have to grant access to your servers to access channel data. The servers get all access on all channels.

 
Set restore as true to allow catch up on the front-end applications.
var pubnub = new PubNub({
    subscribeKey: 'YOUR SUBSCRIBE KEY HERE',
    publishKey: 'YOUR PUBLISH KEY HERE',
    ssl: true
});
A listener lets you to catch up real time messages, get presence and status information if you do not want to use the getMessage, getPresence, getStatus methods. Remember add a listener before subscribing a channel.
pubnub.addListener({
    message: function(m) {
        // handle message
        var channelName = m.channel; // The channel for which the message belongs
        var channelGroup = m.subscription; // The channel group or wildcard subscription match (if exists)
        var pubTT = m.timetoken; // Publish timetoken
        var msg = m.message; // The Payload
        var publisher = m.publisher; //The Publisher
    },
    presence: function(p) {
        // handle presence
        var action = p.action; // Can be join, leave, state-change or timeout
        var channelName = p.channel; // The channel for which the message belongs
        var occupancy = p.occupancy; // No. of users connected with the channel
        var state = p.state; // User State
        var channelGroup = p.subscription; //  The channel group or wildcard subscription match (if exists)
        var publishTime = p.timestamp; // Publish timetoken
        var timetoken = p.timetoken;  // Current timetoken
        var uuid = p.uuid; // UUIDs of users who are connected with the channel
    },
    signal: function(signalMessage) {
        // Handle signal message
    },
    user: function(userEvent) {
        // for Objects, this will trigger when:
        // . user updated
        // . user deleted
    },
    space: function(spaceEvent) {
        // for Objects, this will trigger when:
        // . space updated
        // . space deleted
    },
    membership: function(membershipEvent) {
        // for Objects, this will trigger when:
        // . user added to a space
        // . user removed from a space
        // . membership updated on a space
    },
    status: function(s) {
        var affectedChannelGroups = s.affectedChannelGroups; // The channel groups affected in the operation, of type array.
        var affectedChannels = s.affectedChannels; // The channels affected in the operation, of type array.
        var category = s.category; //Returns PNConnectedCategory
        var operation = s.operation; //Returns PNSubscribeOperation
        var lastTimetoken = s.lastTimetoken; //The last timetoken used in the subscribe request, of type long.
        var currentTimetoken = s.currentTimetoken; //The current timetoken fetched in the subscribe response, which is going to be used in the next request, of type long.
        var subscribedChannels = s.subscribedChannels; //All the current subscribed channels, of type array.
    }
});
var existingListener = {
    message: function() {
    }
}

pubnub.removeListener(existingListener);
CategoriesDescription
PNNetworkUpCategory
SDK detected that network is online.
PNNetworkDownCategory
The SDK will announce this when connection is not available or this is not able to reach the PubNub Data Stream Network.
PNNetworkIssuesCategory
A subscribe event experienced an exception when running. The SDK is not being to able reach the PubNub Data Stream Network because the machine or device are not connected to Internet or this has been lost, your ISP (Internet Service Provider) is having to troubles or perhaps or the SDK is behind of a proxy.
PNReconnectedCategory
SDK was able to reconnect to pubnub.
PNConnectedCategory
SDK subscribed with a new mix of channels (fired every time the channel / channel group mix changed).
PNAccessDeniedCategory
PAM permission failure.
PNMalformedResponseCategory
JSON parsing crashed.
PNBadRequestCategory
The server responded with bad response because the request is malformed.
PNDecryptionErrorCategory
If using decryption strategies and the decryption fails.
PNTimeoutCategory
Failure to establish connection due to timeout.
PNRequestMessageCountExceedCategoryThe SDK will announce this error if requestMessageCountThreshold is set and the number of messages arrived from (PubNub in memory cache messages) are greater than this.
PNUnknownCategoryThis status code is returned when the subscriber get’s a non 200 HTTP response code from the server.
Call time() to verify the client connectivity to the origin:
pubnub.time(function(status, response) {
    if (status.error) {
        console.log(status.error);
    } else {
        console.log(response.timetoken);
    }
});
pubnub.subscribe({
    channels: ['my_channel'],
    withPresence: true
});
The response of the call is handled by adding a Listener. Please see the Listeners section for more details. Listeners should be added before calling the method.
Publish a message to a channel:
pubnub.publish(
    {
        message: {
            such: 'object'
        },
        channel: 'ch1',
        sendByPost: false, // true to send via POST
        storeInHistory: false, //override default storage options
        meta: {
            "cool": "meta"
        } // publish extra meta with the request
    },
    function (status, response) {
        // handle status, response
    }
);
Get occupancy of who's here now on the channel by UUID:
Requires that the Presence add-on is enabled for your key. How do I enable add-on features for my keys? - see http://www.pubnub.com/knowledge-base/discussion/644/how-do-i-enable-add-on-features-for-my-keys
pubnub.hereNow(
    {
        channels: ["my_channel"],
        channelGroups : ["my_channelGroup"],
        includeUUIDs: true,
        includeState: true
    },
    function (status, response) {
        console.log(status);
        console.log(response);
    }
);
Subscribe to realtime Presence events, such as join, leave, and timeout, by UUID. Setting the presence attribute to a callback will subscribe to presents events on my_channel:
Requires that the Presence add-on is enabled for your key. How do I enable add-on features for my keys? - see http://www.pubnub.com/knowledge-base/discussion/644/how-do-i-enable-add-on-features-for-my-keys
pubnub.addListener({
    presence: function(m) {
        console.log(m);
    },
    message: function(message) {
        console.log(message)
    }
});

pubnub.subscribe({
    channels: ["my_channel"],
    withPresence: true
});
The response of the call is handled by adding a Listener. Please see the Listeners section for more details. Listeners should be added before calling the method.
Retrieve published messages from archival storage:
Requires that the Storage and Playback add-on is enabled for your key. How do I enable add-on features for my keys? - see http://www.pubnub.com/knowledge-base/discussion/644/how-do-i-enable-add-on-features-for-my-keys
pubnub.history(
    {
        channel: 'my_channel',
        count: 100, // 100 is the default
        stringifiedTimeToken: true // false is the default
    },
    function (status, response) {
        console.log(response);
    }
);
pubnub.unsubscribe({
    channels: ['my_channel']
})
The response of the call is handled by adding a Listener. Please see the Listeners section for more details. Listeners should be added before calling the method.