@seermedical/cordova-plugin-minew-trackerkit
Version:
A Cordova plugin for communicating with the minew trackerkit
126 lines (95 loc) • 4.47 kB
Markdown
Minew-TrackerKit
======
# Installation
`cordova plugin add https://github.com/seermedical/cordova-plugin-minew-trackerkit.git`
A Cordova plugin on iOS and Android to communicate with the Minew TrackerKit Framework
Plugin development environment: https://github.com/seermedical/seer-beacon-tracker
# Plugin structure
* central manager
* central array of buttons that can be easily identified and accessed by all functions
# Buttons
* address: mac address (unique ID)
* name: could be null
* model: F4S or Finder or null
* RSSI: received signal strength
* battery: int between 0-100 for battery level
* distance: near, mid, far (currently only available on iOS)
* status: connected, disconnected, connecting, failed
# Plugin functions
## startScan(success, failure)
* locate buttons and add to central array
* success - receieves buttons when they are found
* failure - currently only applies to android (no permission)
### TODO
* should accept scanTime (and stopScan after elapsed time)
* put in fail callbakc
## stopScan(success, failure)
* stop currently running scan
## find(address, success, failure)
* look for previously bound beacon address and connect
* success - callback on connection
* failure - callback if connection fails
### TODO
* functions are working as intended via a workaround but the internal code was not working as expected from the Minew SDK. Need to followup with Minew.
## connect(address, success, failure)
* connect to a button for mac address
* success - callback on connection
* failure - callback if connection fails
## disconnect(address, success, failure)
* remove button for mac address
* success - called on success
* success - called on failure
## subscribeToClick(address, success, failure)
* listen to beacon click
* success - gets called every click
* failure - gets called if it fails to subscribe
## subscribeToStatus(address, success, failure)
* listen to beacon connection status
* success - gets called on reconnection
* failure - gets called on disconnection
# iOS Quirks
* you need to strip architectures from the connected MTTrackit framework before it will upload to the app store.
This script should be added as a run script to XCode (see [this answer](https://stackoverflow.com/questions/30547283/submit-to-app-store-issues-unsupported-architecture-x86)). To add run script in XCode go to project target, select 'Build Phases' tab, choose Editor -> Add Build Phase -> Add Run Script Build Phase, Click on the newly created Run Script, copy in the following code:
```
echo "Target architectures: $ARCHS"
APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")
FRAMEWORK_TMP_PATH="$FRAMEWORK_EXECUTABLE_PATH-tmp"
# remove simulator's archs if location is not simulator's directory
case "${TARGET_BUILD_DIR}" in
*"iphonesimulator")
echo "No need to remove archs"
;;
*)
if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "i386") ; then
lipo -output "$FRAMEWORK_TMP_PATH" -remove "i386" "$FRAMEWORK_EXECUTABLE_PATH"
echo "i386 architecture removed"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
fi
if $(lipo "$FRAMEWORK_EXECUTABLE_PATH" -verify_arch "x86_64") ; then
lipo -output "$FRAMEWORK_TMP_PATH" -remove "x86_64" "$FRAMEWORK_EXECUTABLE_PATH"
echo "x86_64 architecture removed"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_TMP_PATH" "$FRAMEWORK_EXECUTABLE_PATH"
fi
;;
esac
echo "Completed for executable $FRAMEWORK_EXECUTABLE_PATH"
echo $(lipo -info "$FRAMEWORK_EXECUTABLE_PATH")
done
```
# Android Quirks
* permissions - don't start scanning straight away. The user needs to grant location access first.
# Minew Resources
- [SDK for android and ios](http://docs.beaconyun.com/TrackerKit/iOS_MinewTrackerKit_Software_Development_Kit_Guide_en/)
- [Minew Libraries and Framework](https://docs.beaconyun.com/)
# General Resources
- [BLE template](https://github.com/seermedical/cordova-plugin-ble-central)
- [Cordova documentation](https://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/)
- [Cordova plugin template](https://github.com/rrostt/cordova-plugin-template)