hackaton-toscana-mobility/hackatonApp/www/js/factories.js
Lorenzo Iovino feb864dc47 First Commit
2016-01-29 13:14:27 +01:00

212 lines
6.6 KiB
JavaScript

angular.module('your_app_name.factories', [])
.factory('FeedLoader', function ($resource){
return $resource('http://ajax.googleapis.com/ajax/services/feed/load', {}, {
fetch: { method: 'JSONP', params: {v: '1.0', callback: 'JSON_CALLBACK'} }
});
})
// Factory for node-pushserver (running locally in this case), if you are using other push notifications server you need to change this
.factory('NodePushServer', function ($http){
// Configure push notifications server address
// - If you are running a local push notifications server you can test this by setting the local IP (on mac run: ipconfig getifaddr en1)
var push_server_address = "http://192.168.1.102:8000";
return {
// Stores the device token in a db using node-pushserver
// type: Platform type (ios, android etc)
storeDeviceToken: function(type, regId) {
// Create a random userid to store with it
var user = {
user: 'user' + Math.floor((Math.random() * 10000000) + 1),
type: type,
token: regId
};
console.log("Post token for registered device with data " + JSON.stringify(user));
$http.post(push_server_address+'/subscribe', JSON.stringify(user))
.success(function (data, status) {
console.log("Token stored, device is successfully subscribed to receive push notifications.");
})
.error(function (data, status) {
console.log("Error storing device token." + data + " " + status);
});
},
// CURRENTLY NOT USED!
// Removes the device token from the db via node-pushserver API unsubscribe (running locally in this case).
// If you registered the same device with different userids, *ALL* will be removed. (It's recommended to register each
// time the app opens which this currently does. However in many cases you will always receive the same device token as
// previously so multiple userids will be created with the same token unless you add code to check).
removeDeviceToken: function(token) {
var tkn = {"token": token};
$http.post(push_server_address+'/unsubscribe', JSON.stringify(tkn))
.success(function (data, status) {
console.log("Token removed, device is successfully unsubscribed and will not receive push notifications.");
})
.error(function (data, status) {
console.log("Error removing device token." + data + " " + status);
});
}
};
})
.factory('AdMob', function ($window){
var admob = $window.AdMob;
if(admob)
{
// Register AdMob events
// new events, with variable to differentiate: adNetwork, adType, adEvent
document.addEventListener('onAdFailLoad', function(data){
console.log('error: ' + data.error +
', reason: ' + data.reason +
', adNetwork:' + data.adNetwork +
', adType:' + data.adType +
', adEvent:' + data.adEvent); // adType: 'banner' or 'interstitial'
});
document.addEventListener('onAdLoaded', function(data){
console.log('onAdLoaded: ' + data);
});
document.addEventListener('onAdPresent', function(data){
console.log('onAdPresent: ' + data);
});
document.addEventListener('onAdLeaveApp', function(data){
console.log('onAdLeaveApp: ' + data);
});
document.addEventListener('onAdDismiss', function(data){
console.log('onAdDismiss: ' + data);
});
var defaultOptions = {
// bannerId: admobid.banner,
// interstitialId: admobid.interstitial,
// adSize: 'SMART_BANNER',
// width: integer, // valid when set adSize 'CUSTOM'
// height: integer, // valid when set adSize 'CUSTOM'
position: admob.AD_POSITION.BOTTOM_CENTER,
// offsetTopBar: false, // avoid overlapped by status bar, for iOS7+
bgColor: 'black', // color name, or '#RRGGBB'
// x: integer, // valid when set position to 0 / POS_XY
// y: integer, // valid when set position to 0 / POS_XY
isTesting: true, // set to true, to receiving test ad for testing purpose
// autoShow: true // auto show interstitial ad when loaded, set to false if prepare/show
};
var admobid = {};
if(ionic.Platform.isAndroid())
{
admobid = { // for Android
banner: 'ca-app-pub-6869992474017983/9375997553',
interstitial: 'ca-app-pub-6869992474017983/1657046752'
};
}
if(ionic.Platform.isIOS())
{
admobid = { // for iOS
banner: 'ca-app-pub-6869992474017983/4806197152',
interstitial: 'ca-app-pub-6869992474017983/7563979554'
};
}
admob.setOptions(defaultOptions);
// Prepare the ad before showing it
// - (for example at the beginning of a game level)
admob.prepareInterstitial({
adId: admobid.interstitial,
autoShow: false,
success: function(){
console.log('interstitial prepared');
},
error: function(){
console.log('failed to prepare interstitial');
}
});
}
else
{
console.log("No AdMob?");
}
return {
showBanner: function() {
if(admob)
{
admob.createBanner({
adId:admobid.banner,
position:admob.AD_POSITION.BOTTOM_CENTER,
autoShow:true,
success: function(){
console.log('banner created');
},
error: function(){
console.log('failed to create banner');
}
});
}
},
showInterstitial: function() {
if(admob)
{
// If you didn't prepare it before, you can show it like this
// admob.prepareInterstitial({adId:admobid.interstitial, autoShow:autoshow});
// If you did prepare it before, then show it like this
// - (for example: check and show it at end of a game level)
admob.showInterstitial();
}
},
removeAds: function() {
if(admob)
{
admob.removeBanner();
}
}
};
})
.factory('iAd', function ($window){
var iAd = $window.iAd;
// preppare and load ad resource in background, e.g. at begining of game level
if(iAd) {
iAd.prepareInterstitial( { autoShow:false } );
}
else
{
console.log("No iAd?");
}
return {
showBanner: function() {
if(iAd)
{
// show a default banner at bottom
iAd.createBanner({
position:iAd.AD_POSITION.BOTTOM_CENTER,
autoShow:true
});
}
},
showInterstitial: function() {
// ** Notice: iAd interstitial Ad only supports iPad.
if(iAd)
{
// If you did prepare it before, then show it like this
// - (for example: check and show it at end of a game level)
iAd.showInterstitial();
}
},
removeAds: function() {
if(iAd)
{
iAd.removeBanner();
}
}
};
})
;