I want to add Cordova Social Sharing plugin to my app and using
the sample code form here in app.js http://ngcordova.com/docs/plugins/socialSharing/
it currently does not work… What am I doing wrong?
I am calling the button like this
<button ng-click="shareTwitter()" class="button icon-left button-block ion-social-twitter button-calm">Share On Twitter</button>
the social media buttons are located on this template friends.html, am I calling the right controller here?
.state('tab.friends', {
url: '/dash/friends',
views: {
'tab-dash': {
templateUrl: 'templates/friends.html',
controller: 'DashCtrl'
}
}
})
app.js
// Ionic Starter App
// angular.module is a global place for creating, registering and retrieving Angular modules
// 'starter' is the name of this angular module example (also set in a <body> attribute in index.html)
// the 2nd parameter is an array of 'requires'
// 'starter.services' is found in services.js
// 'starter.controllers' is found in controllers.js
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
cordova.plugins.Keyboard.disableScroll(true);
}
if (window.StatusBar) {
// org.apache.cordova.statusbar required
StatusBar.styleDefault();
}
});
})
.config(function($stateProvider, $urlRouterProvider) {
// Ionic uses AngularUI Router which uses the concept of states
// Learn more here: https://github.com/angular-ui/ui-router
// Set up the various states which the app can be in.
// Each state's controller can be found in controllers.js
$stateProvider
// setup an abstract state for the tabs directive
.state('tab', {
url: '/tab',
abstract: true,
templateUrl: 'templates/tabs.html'
})
// Each tab has its own nav history stack:
.state('tab.dash', {
url: '/dash',
views: {
'tab-dash': {
templateUrl: 'templates/tab-dash.html',
controller: 'DashCtrl'
}
}
})
.state('tab.welcome', {
url: '/dash/welcome',
views: {
'tab-dash': {
templateUrl: 'templates/welcome.html',
controller: 'DashCtrl'
}
}
})
.state('tab.transfer', {
url: '/dash/transfer',
views: {
'tab-dash': {
templateUrl: 'templates/transfer-form.html',
controller: 'DashCtrl'
}
}
})
.state('tab.refill', {
url: '/dash/refill',
views: {
'tab-dash': {
templateUrl: 'templates/refill.html',
controller: 'DashCtrl'
}
}
})
.state('tab.contact', {
url: '/dash/contact',
views: {
'tab-dash': {
templateUrl: 'templates/contact.html',
controller: 'DashCtrl'
}
}
})
.state('tab.friends', {
url: '/dash/friends',
views: {
'tab-dash': {
templateUrl: 'templates/friends.html',
controller: 'DashCtrl'
}
}
})
.state('tab.chats', {
url: '/chats',
views: {
'tab-chats': {
templateUrl: 'templates/tab-chats.html',
controller: 'ChatsCtrl'
}
}
})
.state('tab.chat-detail', {
url: '/chats/:chatId',
views: {
'tab-chats': {
templateUrl: 'templates/chat-detail.html',
controller: 'ChatDetailCtrl'
}
}
})
.state('tab.account', {
url: '/account',
views: {
'tab-account': {
templateUrl: 'templates/tab-account.html',
controller: 'AccountCtrl'
}
}
});
// if none of the above states are matched, use this as the fallback
$urlRouterProvider.otherwise('/tab/dash');
})
.controller('DashCtrl', function($scope, $cordovaSocialSharing) {
$scope.shareTwitter = function() {
$cordovaSocialSharing
.shareViaTwitter(message, image, link)
.then(function(result) {
// Success!
}, function(err) {
// An error occurred. Show a message to the user
});
};
$scope.shareFacebook = function() {
$cordovaSocialSharing
.shareViaFacebook(message, image, link)
.then(function(result) {
// Success!
}, function(err) {
// An error occurred. Show a message to the user
});
};
$scope.shareSMS = function() {
// access multiple numbers in a string like: '0612345678,0687654321'
$cordovaSocialSharing
.shareViaSMS(message, number)
.then(function(result) {
// Success!
}, function(err) {
// An error occurred. Show a message to the user
});
};
$scope.shareFacebook = function() {
// toArr, ccArr and bccArr must be an array, file can be either null, string or array
$cordovaSocialSharing
.shareViaEmail(message, subject, toArr, ccArr, bccArr, file)
.then(function(result) {
// Success!
}, function(err) {
// An error occurred. Show a message to the user
});
};
// $cordovaSocialSharing
// .canShareViaEmail()
// .then(function(result) {
// // Yes we can
// }, function(err) {
// // Nope
// });
});
controller.js
angular.module('starter.controllers', [])
.controller('DashCtrl', function($scope) {})
.controller('ChatsCtrl', function($scope, Chats) {
// With the new view caching in Ionic, Controllers are only called
// when they are recreated or on app start, instead of every page change.
// To listen for when this page is active (for example, to refresh data),
// listen for the $ionicView.enter event:
//
//$scope.$on('$ionicView.enter', function(e) {
//});
$scope.chats = Chats.all();
$scope.remove = function(chat) {
Chats.remove(chat);
};
})
.controller('ChatDetailCtrl', function($scope, $stateParams, Chats) {
$scope.chat = Chats.get($stateParams.chatId);
})
.controller('AccountCtrl', function($scope) {
$scope.settings = {
enableFriends: true
};
});