@groupsosimple/nativescript-pubnub
by groupsosimple | v1.0.2
This is a Nativescript plugin wraper for the PubNub SDK. It has implementations for both Android and iOS SDKs.
npm i --save @groupsosimple/nativescript-pubnub

npm npm

@groupsosimple/nativescript-pubnub

This is a NativeScript plugin wraper for the PubNub SDK. It has implementations for both Android and iOS SDKs. An Angular service is also provided.

ns plugin add @groupsosimple/nativescript-pubnub

Get keys

You will need the publish and subscribe keys to authenticate your app. Get your keys from the PubNub Admin Portal.

Import PubNub

Using TypeScript

import { PubNub } from '@groupsosimple/nativescript-pubnub';

Using JavaScript

var pubnub = require('@groupsosimple/nativescript-pubnub');

Configure PubNub

Configure your keys:

pubnub = new PubNub({
publishKey: 'myPublishKey',
subscribeKey: 'mySubscribeKey',
uuid: 'myUniqueUUID',
});
//or
pubnub = new PubNub().configuration({
publishKey: 'myPublishKey',
subscribeKey: 'mySubscribeKey',
uuid: 'myUniqueUUID',
});

Add event listeners

pubnub.addListener({
message: function (m) {
// handle messages
},
presence: function (p) {
// handle presence
},
signal: function (s) {
// handle signals
},
messageAction: function (ma) {
// handle message actions
},
file: function (event) {
// handle files
},
status: function (s) {
// handle status
},
});

Publish/subscribe

var publishPayload = {
title: 'greeting',
description: 'This is my first message!',
};

pubnub.publish('MyChannel', publishPayload, (status) => {
console.log(status);
});

pubnub.subscribe(['MyChannel'], true);

Using the Angular Service

Declare the PubNub Angular Service in your root module

import { PubNubService } from '@groupsosimple/nativescript-pubnub/angular';

@NgModule({
imports: [...],
declarations: [...],
schemas: [...],
providers: [PubNubService],
})

Inject the service in a component and configure the with your keys

@Component()
export class MainComponent {
constructor(private pubnubService: PubNubService) {
pubnubService.configuration({
publishKey: 'myPublishKey',
subscribeKey: 'mySubscribeKey',
uuid: 'myUniqueUUID',
});
}
}

After that, you can use the service normally

@Component()
export class SomeComponent {
constructor(private pubnubService: PubNubService) {
pubnubService.subscribe(['MyChannel'], true);
}
}

PubNub Api

constructor(config?: PNConfiguration);
configuration(config: PNConfiguration): PubNub;
subscribe(channels: string[], withPresence: boolean): void;
subscribeToChannelGroups(groups: string[], withPresence: boolean): void;
unsubscribe(channels: string[]): void;
unsubscribeFromAll(): void;
unsubscribeFromChannelGroups(groups: string[]): void;
publish(channel: string, message: Object, responseListener: (status: PNStatus) => void): void;
addEventListener(event: PNEventListener): void;
destroy(): void;

More Information

More information can be seen in the original SDK implementation

Changelog

  • 1.0.0 Initial release
  • 1.0.1 Angular service and bug fixes

License

Apache License Version 2.0

Authors

Appreciation

  • Thanks for rickybrown, the developer of ns-pubnub, where some of the iOS implementation was based on.