Skip to content

Beaconstac/cordova-plugin-nearbee

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Cordova plugin for NearBee SDK.

Pre-requisites

  • Set up Cordova

  • An active Bluetooth connection.

  • Get the Developer token and Organization ID from here.

  • Make sure to use any Cordova plugin to keep the app running in background.

Android

  • Android target version should be 28.

  • Coarse Location permission.

  • Replace MY_DEV_TOKEN and MY_ORGANIZATION_ID in the AndroidManifest.xml file with proper values.

    <application>
        ...
        <meta-data
            android:name="co.nearbee.api_key"
            android:value="MY_DEV_TOKEN" />

        <meta-data
            android:name="co.nearbee.organization_id"
            android:value="MY_ORGANIZATION_ID" />
        ...
    </application>

iOS

  • Cordova iOS platform version should be 5.0.0.

  • Pod iOS platform version should be 10.0.

  • Notification and location permissions.

  • Replace MY_DEV_TOKEN and MY_ORGANIZATION_ID in the Info.plist file with proper values

    <key>co.nearbee.api_key</key>
    <string>MY_DEV_TOKEN</string>
    <key>co.nearbee.organization_id</key>
    <string>MY_ORGANIZATION_ID</string>

Configuring the project

cordova plugin add cordova-plugin-nearbee

Usage

NOTE: Every method returns success and error callbacks.

Initialize SDK.

    window.plugins.nearbeePlugin.initialize();

Enable background notifications

If set to true the NearBee SDK will send beacon notifications in the background, when the app is not running.

    window.plugins.nearbeePlugin.enableBackgroundNotifications(true);

Start scanning

This will start the scan for the beacons.

     window.plugins.nearbeePlugin.startScanning();

Receive nearbee notifications

To display a UI with list of beacons, the following needs to be done:

     window.plugins.nearbeePlugin.nearbeeNotifications(function(notificationObject) {
            console.log(JSON.parse(notificationObject));
          }, function(err) {
            console.log('Uh oh... ' + err);
        });

Stop Scanning

This will stop the scan for the beacons.

     window.plugins.nearbeePlugin.stopScanning();

Clearing notification cache

This will clear the cached server responses and will force NearBee to fetch fresh data from the server.

     window.plugins.nearbeePlugin.clearNotificationCache();

Overriding notification click behaviour

Android

  1. Extend the NotificationUtil class in your your_app_dir/platforms/android/app/src/main/java/com/your_app
public class MyNotificationManager extends NotificationManager {

    public MyNotificationManager(Context context) {
        super(context);
    }

    @Override
    public Intent getAppIntent(Context context) {
        // This intent is for handling grouped notification click
        return new Intent(context, MainActivity.class);
    }

    @Override
    public Intent getBeaconIntent(Context context, NearBeacon nearBeacon) {
        // This intent is for handling individual notification click
        // Pass the intent of the activity that you want to be opened on click
        if (nearBeacon.getBusiness() != null) {
            BeaconAttachment attachment = nearBeacon.getBestAvailableAttachment(context);
            if (attachment != null) {
                final Intent intent = new Intent(context, MainActivity.class);
                // pass the url from the beacon, so that it can be opened from your activity
                intent.putExtra("url", attachment.getUrl());
                return intent;
            }
        }
        return null;
    }

}
  1. Create a meta-data field for the class MyNotificationUtil in the Android.mainfest file.
    <application>
        ...
        <meta-data
        	android:name="co.nearbee.notification_util"
    		android:value=".MyNotificationUtil" />
        ...
    </application>
  1. Handle the intent data in your Activity's onCreate
public class MainActivity extends CordovaActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // enable Cordova apps to be started in the background
        Bundle extras = getIntent().getExtras();
        if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
            moveTaskToBack(true);
        }

        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);


        // Handle the intent here
        if (getIntent().getStringExtra("url") != null) {
            String url = getIntent().getStringExtra("url");
            // Do something with the url here
         }
    }
}

iOS

Add the below lines of code to AppDelegate.m

#import <NearBee/NearBee-Swift.h>

- (void)userNotificationCenter:(UNUserNotificationCenter *)center 
didReceiveNotificationResponse:(UNNotificationResponse *)response 
withCompletionHandler:(void (^)(void))completionHandler {

    NearBee *nearBee = [NearBee initNearBee];

    BOOL isNearBeeNotification = [nearBee checkAndProcessNearbyNotification:response.notification];
    if (isNearBeeNotification) {
        completionHandler()
    } else {
        // Not a near bee notification, you need to handle
    }
}

Steps to run Example app

  1. Clone/Download the repo.

  2. Add required platforms

    Android
    cordova platforms add android

    iOS
    cordova platforms add ios

  3. Follow Pre-requisites of the plugin.

  4. To run the project use

    Android
    cordova run android

    iOS
    cordova build ios

    Open .xcworkspace and run.

About

Cordova plugin for Beaconstac NearBee SDK

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •