213 lines
6.6 KiB
JavaScript
213 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();
|
|
}
|
|
}
|
|
};
|
|
})
|
|
|
|
|
|
;
|