• Stars
    star
    305
  • Rank 136,879 (Top 3 %)
  • Language
    Objective-C
  • License
    BSD 2-Clause "Sim...
  • Created about 9 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

XMPP library for React Native (iOS and Android native support)

react-native-xmpp

An XMPP library for React Native.

A simple interface for native XMPP communication. Both iOS and Android are supported.

Demo

XmppDemo uses a Flux approach (check its XmppStore) to communicate with a sample XMPP server, where 4 accounts were registered.

demo-3

Example

var XMPP = require('react-native-xmpp');

// optional callbacks
XMPP.on('message', (message) => console.log('MESSAGE:' + JSON.stringify(message)));
XMPP.on('iq', (message) => console.log('IQ:' + JSON.stringify(message)));
XMPP.on('presence', (message) => console.log('PRESENCE:' + JSON.stringify(message)));
XMPP.on('error', (message) => console.log('ERROR:' + message));
XMPP.on('loginError', (message) => console.log('LOGIN ERROR:' + message));
XMPP.on('login', (message) => console.log('LOGGED!'));
XMPP.on('connect', (message) => console.log('CONNECTED!'));
XMPP.on('disconnect', (message) => console.log('DISCONNECTED!'));

// trustHosts (ignore self-signed SSL issues)
// Warning: Do not use this in production (security will be compromised).
XMPP.trustHosts(['chat.google.com']);

// connect
XMPP.connect(MYJID, MYPASSWORD);

// send message
XMPP.message('Hello world!', TOJID);

// disconnect
XMPP.disconnect();

// remove all event listeners (recommended on componentWillUnmount)
XMPP.removeListeners();

// remove specific event listener (type can be 'message', 'iq', etc.)
XMPP.removeListener(TYPE);

Getting started

  1. npm install react-native-xmpp --save

iOS

Please use CocoaPods

  1. Install latest XMPPFramework: https://github.com/robbiehanson/XMPPFramework pod 'XMPPFramework', :git => 'https://github.com/robbiehanson/XMPPFramework.git', :branch => 'master'

  2. Add this package pod: pod 'RNXMPP', :path => '../node_modules/react-native-xmpp'

If you have problems with latest 4.0 XMPPFramework and/or XCode 9.3, you may use old one with forked KissXML: pod 'XMPPFramework', '~> 3.7.0' pod 'KissXML', :git => "https://github.com/aksonov/KissXML.git", :branch => '5.1.4'

Android

react-native link react-native-xmpp

If it doesn't link the react-native-xmpp correct:

android/settings.gradle

include ':react-native-xmpp'
project(':react-native-xmpp').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-xmpp/android')

android/app/build.gradle

dependencies {
   ...
   compile project(':react-native-xmpp')
}

MainApplication.java

On top, where imports are:

import rnxmpp.RNXMPPPackage;

Add the ReactVideoPackage class to your list of exported packages.

@Override
protected List<ReactPackage> getPackages() {
    return Arrays.<ReactPackage>asList(
        new MainReactPackage(),
        new RNXMPPPackage()
    );
}