JavaScriptWebWebNode.jsPhoneGapReactReduxTitaniumVueJavaScript V4 Misc API Reference for Realtime Apps

End all open requests and close the PubNub instance.

pubnub.stop();
This function allow to decrypt the data.
To decrypt the data you can use the following method(s) in JavaScript V4 SDK.
  1. ParameterTypeRequiredDescription
    dataStringYesThe data to decrypt.
    customCipherKeyStringOptionalIf it's not provided, the cipher key from config will be used.
var decrypted = pubnub.decrypt(encrypted, 'myCipherKey'); // Pass the encrypted data as the first parameter in decrypt Method
It returns the decrypted data as an object.
This function allow to decrypt the file content/data.
To decrypt the file you can use the following method(s) in JavaScript V4 SDK.
  1. ParameterTypeRequiredDescription
    keyStringYesCipher key used for decryption.
    filePubNubFileYesFile to decrypt.
// Node.js example
import fs from 'fs';

const fileBuffer = fs.readFileSync('./cat_picture_encrypted.jpg');

const file = pubnub.File.create({ data: fileBuffer, name: 'cat_picture.jpg', mimeType: 'image/jpeg' });

const decryptedFile = await pubnub.decryptFile('myCipherKey', file);

Returns a promise of PubNubFile.

This function allow to encrypt the data.
To encrypt the data you can use the following method(s) in JavaScript V4 SDK.
  1. ParameterTypeRequiredDescription
    dataStringYesThe data to encrypt.
    customCipherKeyStringOptionalIf it's not provided, the cipher key from config will be used.
var sCypher = "testCypher";
var msgContent = "This is the data I wish to encrypt.";
console.log('msgContent: ' + msgContent);

// Encrypt with pubnub
var encryptedMessage = pubnub.encrypt(JSON.stringify(msgContent), sCypher);
console.log('encryptedMessage PN: ' + encryptedMessage);
It returns the encrypted data as string.
This function allow to encrypt the file content/data.
To encrypt the file you can use the following method(s) in JavaScript V4 SDK.
  1. ParameterTypeRequiredDescription
    keyStringYesCipher key used for encryption.
    filePubNubFileYesFile to encrypt.
// Node.js example
import fs from 'fs';

const fileBuffer = fs.readFileSync('./cat_picture.jpg');

const file = pubnub.File.create({ data: fileBuffer, name: 'cat_picture.jpg', mimeType: 'image/jpeg' });

const encryptedFile = await pubnub.encryptFile('myCipherKey', file);

Returns a promise of PubNubFile.

Internal representation of the file used by the SDK. Depending on the environment, different methods can be used to extract the file.
  • Methods supported in Node.js:
    • file.toBuffer() returns Promise<Buffer>

    • file.toStream() returns Promise<Readable>

    • file.toString(encoding: string) returns a string encoded using encoding (if not available, defaults to utf8)

  • Methods supported in a browser:
    • file.toFile() returns Promise<File>

    • file.toBlob() returns Promise<Blob>

    • file.toArrayBuffer() returns Promise<ArrayBuffer>

    • file.toString(encoding: string) returns returns a string encoded using encoding (if not available, defaults to utf8)

  • React and React Native:
    • file.toBlob() returns Promise

pubnub.File.create(input: FileInput): PubNubFile;

FileInput represents a variety of possible inputs that represent a file in different environments.

  • Using streams:
    {
        stream: Readable,
        name: string,
        mimeType?: string
    }
  • Using buffers:
    {
        data: Buffer,
        name: string,
        mimeType?: string
    }
  • Using strings:
    {
        data: string,
        encoding: string,
        name: string, 
        mimeType?: string
    }
  • Using File API:
    File
  • Using strings:
    {
        data: string,
        name: string,
        mimeType?: string
    }
  • Using ArrayBuffer:
    {
        data: ArrayBuffer,
        name: string,
        mimeType?: string 
    }
Call the reconnect method to force the SDK to try and reach out PubNub.
To reconnect the data you can use the following method(s) in JavaScript V4 SDK.
  1. This method doesn't take any arguments.

pubnub.reconnect();
This function will return a 17 digit precision Unix epoch.
 
Timetoken
The timetoken is constructed using the following algorithm:
timetoken = (Unix epoch time in seconds) * 10000000
Example of creating a timetoken for a specific time & date
08/19/2013 @ 9:20pm in UTC = 1376961606
timetoken = 1376961606 * 10000000
timetoken = 13769616060000000
To fetch Time you can use the following method(s) in JavaScript V4 SDK
  1. ParameterTypeRequiredDescription
    callback Function YesCallback is called after a successful return.
// assuming an initialized PubNub instance already exists
pubnub.time(function(status, response) {
	if (status.error) {
		// handle error if something went wrong based on the status object
	} else {
		console.log(response.timetoken);
	}
})
//Example of status
{
    error: false,
    operation: 'PNTimeOperation',
    statusCode: 200
}

//Example of response
{
    timetoken: 15031768233407550
}
  1. pubnub.time().then((timetoken) => {
        console.log(timetoken);
    }).catch((error) => {
        console.log(error)
    });

APNS2 configuration type.

  1. ParameterTypeRequiredDescription
    collapseIdStringOptionalNotification group / collapse identifier.

    Value will be used in APNS POST request as apns-collapse-id header value.
    expirationDateDateOptionalDate till which APNS will try to deliver notification to target device.

    Value will be used in APNS POST request as apns-expiration header value.
    targetsArray<APNS2Target>YesList of topics which should receive this notification.

APNSNotificationPayload instance provides access to options specific only to push notifications sent with APNS.

  1. ParameterTypeDescription
    configurations Array<APNS2NotificationConfiguration *> *List of APNS over HTTP/2 delivery configurations.
    notificationHashHash with parameters which specify user-visible key-value pairs.
    payloadHashPlatform specific notification payload.

    In addition to data required to make notification visual presentation it can be used to pass additional information which should be sent to remote device.
    silentBooleanWhether operation system should handle notification layout by default or not.

    alert, sound and badge will be removed from resulting payload if set to true.

APNS2 configuration target type.

  1. ParameterTypeRequiredDefaultsDescription
    topicStringYesNotifications topic name (usually it is bundle identifier of applicationfor Apple platform).
    Required only if pushGateway set to apns2.
    environmentStringOptionaldevelopmentEnvironment within which registered devices to which notifications should be delivered.

    Available:
    • development
    • production
    excludedDevicesArrayYesList of devices (their push tokens) to which this notification shouldn't be delivered.

FCMNotificationPayload instance provides access to options specific only to push notifications sent with FCM.

  1. ParameterTypeDescription
    notificationHashHash with parameters which specify user-visible key-value pairs.
    dataHash Custom key-value object with additional information which will be passed to device along with displayable notification information.

    All object and scalar type value should be converted to strings before passing to this object.
    Keys shouldn't match: from, message_type or start with google or gcm.
    Also as key can't be used any word defined in this table.
    silentBooleanWhether operation system should handle notification layout by default or not.

    notification key with it's content will be moved from root level under data key.
    iconStringIcon which should be shown on the left from notification title instead of application icon.
    tagStringUnique notification identifier which can be used to publish update notifications (they will previous notification with same tag).
    payloadHashPlatform specific notification payload.

    In addition to data required to make notification visual presentation it can be used to pass additional information which should be sent to remote device.

MPNSNotificationPayload instance provides access to options specific only to push notifications sent with MPNS.

  1. ParameterTypeDescription
    backContentStringMessage which should be shown in notification body (text for back tile).
    40 characters long to fit into tile.
    backTitleStringAdditional information which may explain reason why this notification has been delivered.
    Maximum 15 characters long.
    countNumberValue between 1-99 which will be shown on the tile.
    titleStringTitle of the tile.
    typeStringType of notification which should be presented to the user.
    payloadHashPlatform specific notification payload.

    In addition to data required to make notification visual presentation it can be used to pass additional information which should be sent to remote device.

NotificationsPayload instance provides convenient method and properties which allow to setup notification for multiple platforms without getting into details how they should be formatted.
Builder instance contain additional set of properties which allow to fine tune payloads for particular platforms and even access to RAW payload dictionaries.

  1. ParameterTypeDescription
    subtitleStringAdditional information which may explain reason why this notification has been delivered.
    badgeNumberNumber which should be shown in space designated by platform (for example atop of application icon).
    soundStringPath to file with sound or name of system sound which should be played upon notification receive.
    debuggingBooleanWhether PubNub service should provide debug information about devices which received created notifications payload.
    apns APNSNotificationPayloadAccess to APNS specific notification builder.
    mpns MPNSNotificationPayloadAccess to MPNS specific notification builder.
    fcm FCMNotificationPayloadAccess to FCM specific notification builder.
  2. ParameterTypeRequiredDescription
    titleStringOptionalShort text which should be shown at the top of notification instead of application name.
    bodyStringOptionalMessage which should be shown in notification body (under title line).
  3. ParameterTypeRequiredDescription
    platformsArrayYesList of platforms for which payload should be added to final dictionary.

    Available:
    • apns
    • apns2
    • fcm
    • mpns

Create notification payload builder with pre-defined notification title and body:

  1. let builder = PubNub.notificationPayload('Chat invitation', 
                                             'You have been invited to \'quiz\' chat');
    let messagePayload = builder.buildPayload(['apns2', 'fcm']);
    messagePayload.message = 'Max invited you to \'quiz\' chat room';
    messagePayload.roomID = 'ewuiogw9vewg0';
    
    pubnub.publish(
        {
            message: messagePayload,
            channel: 'chat-bot',
        }, 
        function (status, response) {
            // Handle publish results
        }
    );
  2. let builder = PubNub.notificationPayload('Chat invitation', 
                                             'You have been invited to \'quiz\' chat');

Hash with data, which can be sent with publish method call and trigger remote notifications for specified platforms.

  1. let builder = PubNub.notificationPayload('Chat invitation', 
                                             'You have been invited to \'quiz\' chat');
    builder.sound = 'default';
    
    console.log(JSON.stringify(builder.buildPayload(['apns', 'fcm']), null, 2));

    output

    {
        "pn_apns": {
            "aps": {
                "alert": {
                    "body": "You have been invited to 'quiz' chat",
                    "title": "Chat invitation"
                },
                "sound": "default"
            }
        },
        "pn_gcm": {
            "notification": {
                "body": "You have been invited to 'quiz' chat",
                "sound": "default",
                "title": "Chat invitation"
            }
        }
    }
  2. let builder = PubNub.notificationPayload('Chat invitation', 
                                             'You have been invited to \'quiz\' chat');
    builder.apns.configurations = [{ targets: [{ topic: 'com.meetings.chat.app' }] }];
    builder.sound = 'default';
    
    console.log(JSON.stringify(builder.buildPayload(['apns2', 'fcm']), null, 2));

    output

    {
        "pn_apns": {
            "aps": {
                "alert": {
                    "body": "You have been invited to 'quiz' chat",
                    "title": "Chat invitation"
                },
                "sound": "default"
            },
            "pn_push": [
                {
                    "targets": [
                        {
                            "environment": "development",
                            "topic": "com.meetings.chat.app"
                        }
                    ],
                    "version": "v2"
                }
            ]
        },
        "pn_gcm": {
            "notification": {
                "body": "You have been invited to 'quiz' chat",
                "sound": "default",
                "title": "Chat invitation"
            }
        }
    }
  3. let configuration = [
        { 
            collapseId: 'invitations',
            expirationDate: new Date(Date.now() + 10000),
            targets: [{ topic: 'com.meetings.chat.app' }] 
        }
    ];
    let builder = PubNub.notificationPayload('Chat invitation', 
                                             'You have been invited to \'quiz\' chat');
    builder.apns.configurations = [configuration];
    
    console.log(JSON.stringify(builder.buildPayload(['apns2', 'fcm']), null, 2));

    output

    {
        "pn_apns": {
            "aps": {
                "alert": {
                    "body": "Chat invitation",
                    "title": "You have been invited to 'quiz' chat"
                }
            },
            "pn_push": [
                {
                    "collapse_id": "invitations",
                    "expiration": "2019-11-28T22:06:09.163Z",
                    "targets": [
                        {
                            "environment": "development",
                            "topic": "com.meetings.chat.app"
                        }
                    ],
                    "version": "v2"
                }
            ]
        },
        "pn_gcm": {
            "notification": {
                "body": "You have been invited to 'quiz' chat",
                "title": "Chat invitation"
            }
        }
    }

Example above show how to create notification payload which APNS will try to redeliver few times (if devices not active) and give up after 10 seconds since moment when it has been scheduled.

Additionally this invitation notification will be grouped along with other invitation notifications (using provided collapse_id as group identifier) and shown as one in notification center.

Configured and ready to use NotificationsPayload instance.