Created
August 26, 2015 20:54
-
-
Save docherty/8aa0177e63e8f243e1e5 to your computer and use it in GitHub Desktop.
Revisions
-
docherty created this gist
Aug 26, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,122 @@ // JMD iBeacon test angular.module('beacon-test.controllers',[]) .controller('MainCtrl', ['$scope', '$window', 'localNotification', function ($scope, $window, localNotification){ //console.log('MainCtrl is loaded.'); $scope.ifurl = ""; // functions called by UI buttons $scope.startMonitoring = function () { for(i=0; i< $scope.beaconRegions.length; i++){ var beaconRegion = $window.cordova.plugins.locationManager.Regions.fromJson($scope.beaconRegions[i]); $window.cordova.plugins.locationManager.startMonitoringForRegion(beaconRegion) .fail(function(){console.log(JSON.stringify(error))}) .done(); // set the URL for testing (a random big image) $scope.ifurl = "http://cctv-africa.com/wp-content/uploads/2015/05/BIGCAT.jpg"; } }; $scope.stopMonitoring = function () { for(i=0; i< $scope.beaconRegions.length; i++){ var beaconRegions = $window.cordova.plugins.locationManager.Regions.fromJson($scope.beaconRegions[i]); $window.cordova.plugins.locationManager.stopMonitoringForRegion(beaconRegions) .fail(function(){console.log(JSON.stringify(error))}) .done(); } }; /************************* Initialize some stuff **************************/ $scope.resetStuff = function(){ // a variable to update the UI with messages $scope.status = ""; $scope.pingCount = 0; // set up an array of beacon region objects $scope.beaconRegions = [ { 'uuid':'1FFC3175-ECEE-4D63-BEB7-470431B12FED', 'identifier': 'Alfie', 'major': 1, 'minor': 1, 'typeName': 'BeaconRegion' }, { 'uuid':'1FFC3175-ECEE-4D63-BEB7-470431B12FED', 'identifier': 'Bertie', 'major': 1, 'minor': 2, 'typeName': 'BeaconRegion' }, { 'uuid':'1FFC3175-ECEE-4D63-BEB7-470431B12FED', 'identifier': 'Charlie', 'major': 1, 'minor': 3, 'typeName': 'BeaconRegion' } ]; }; // helper function to get the index from an object's property // example: var data = myArray[myArray.getIndexFromValue("key", "value")]; Array.prototype.getIndexFromValue = function (name, value) { for (var i = 0; i < this.length; i++) { if (this[i][name] == value) { return i; } } }; window.ionic.Platform.ready(function () { //console.log("Cordova Plugins ready"); $scope.resetStuff(); $window.cordova.plugins.locationManager.enableDebugNotifications(); // ask iOS 8 for permission $window.cordova.plugins.locationManager.requestAlwaysAuthorization(); // set the delegate delegate = new $window.cordova.plugins.locationManager.Delegate(); $window.cordova.plugins.locationManager.setDelegate(delegate); delegate.didDetermineStateForRegion = function (pluginResult) { console.log("didDetermineStateForRegion: " + pluginResult.region.identifier +" -> "+ pluginResult.state+" :: "+JSON.stringify(pluginResult)); }; delegate.didStartMonitoringForRegion = function (pluginResult) { console.log("Monitoring:"+pluginResult.region.identifier); }; delegate.didEnterRegion = function (pluginResult) { console.log("didEnterRegion: " + pluginResult.region.identifier); }; delegate.didExitRegion = function (pluginResult) { console.log("didExitRegion: " + pluginResult.region.identifier); }; delegate.didRangeBeaconsInRegion = function (pluginResult) { // There must be a beacon within range. if (pluginResult.beacons.length === 0) { //$scope.status += "No beacon in range on this call: "+JSON.stringify(pluginResult)+"<br>"; //console.log(JSON.stringify(pluginResult)); return; } else { //console.log(pluginResult.beacons[0].major +" : "+ pluginResult.beacons[0].minor +" -> "+pluginResult.beacons[0].proximity); for (var i = 0; i < $scope.beaconRegions.length; i++) { if ($scope.beaconRegions[i].uuid == pluginResult.beacons[0].uuid.toLowerCase() && $scope.beaconRegions[i].major == pluginResult.beacons[0].major && $scope.beaconRegions[i].minor == pluginResult.beacons[0].minor) { $scope.$apply($scope.beaconRegions[i].proximity = pluginResult.beacons[0].proximity); // check what we're being sent //console.log(JSON.stringify(pluginResult)); } } } }; }); // end of window.ionic.Platform.ready }]);