-
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 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>
-
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>
cordova plugin add cordova-plugin-nearbee
NOTE: Every method returns success and error callbacks.
window.plugins.nearbeePlugin.initialize();
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);
This will start the scan for the beacons.
window.plugins.nearbeePlugin.startScanning();
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);
});
This will stop the scan for the beacons.
window.plugins.nearbeePlugin.stopScanning();
This will clear the cached server responses and will force NearBee to fetch fresh data from the server.
window.plugins.nearbeePlugin.clearNotificationCache();
- 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;
}
}
- Create a
meta-data
field for the classMyNotificationUtil
in theAndroid.mainfest
file.
<application>
...
<meta-data
android:name="co.nearbee.notification_util"
android:value=".MyNotificationUtil" />
...
</application>
- 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
}
}
}
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
}
}
-
Clone/Download the repo.
-
Add required platforms
Android
cordova platforms add android
iOS
cordova platforms add ios
-
Follow Pre-requisites of the plugin.
-
To run the project use
Android
cordova run android
iOS
cordova build ios
Open .xcworkspace and run.