0
votes

I'm running a titanium iOS application, it works as expected on the simulator and also on the device when I run it from appcelerator studio, however when I package the app for adhoc distribution and install it on my iPhone device via iTunes it just gets stuck on the splash screen.

Also I can not debug because it is adhoc distribution. The only thing I noticed using alerts is that it runs through alloy.js but never gets to index.js

Any help would be appreciated.

edit: these are my index and alloy files.

index.js

// Arguments passed into this controller can be accessed via the `$.args` object directly or:
var args = $.args;
var webServices = require("webService");
var TAG = "[loginActivity.js] : ";
var fb = Alloy.Globals.Facebook;
var win = $.window;
var core = require("core");
var network = require("NETWORK");



sessionStatus = Ti.App.Properties.getBool('session');
console.log("session estatus "+sessionStatus);
if(!sessionStatus)
    Ti.App.Properties.setBool('session', false);

sessionStatus = Ti.App.Properties.getBool('session');
console.log("session estatus "+sessionStatus);
Ti.App.session=sessionStatus;


manageLogin();

Ti.App.addEventListener('resumed',function(e){
   //check if login is still valid
   console.log("hola");
   manageLogin(); //I just reuse my login logic on resume
});


function manageLogin(){
    if(Ti.App.session==false){
    //  require("core").openLogin;
    console.log("abro login");
    openLogin();
    }else{
        console.log("abro main");
        Ti.App.User_id= Ti.App.Properties.getInt('User_id');
        //Ti.App.profIm =Ti.App.Properties.getObject('image');
       require("core").openMainActivity();
    }   
}






function openLogin(){
console.log("First attempt to use geolocation services.");
var hasLocationPermissions = Ti.Geolocation.hasLocationPermissions(Ti.Geolocation.AUTHORIZATION_WHEN_IN_USE);
Ti.API.info('Ti.Geolocation.hasLocationPermissions', hasLocationPermissions);

if (hasLocationPermissions) {
    console.log("GPS permissions granted.");

    open();
} else {

    console.log("Second attempt");
    Ti.Geolocation.requestLocationPermissions(Ti.Geolocation.AUTHORIZATION_WHEN_IN_USE, function(e) {

        if (e.success) {
            // $.index.open();
            open();
        } else {
            console.log("Something happened during second attempt");
            if (OS_ANDROID) {
                //alert('You denied permission for now, forever or the dialog did not show at all because you denied it forever earlier.');
                var activity = Titanium.Android.currentActivity;
                activity.finish();
                open();
            }
            // We already check AUTHORIZATION_DENIED earlier so we can be sure it was denied now and not before
            Ti.UI.createAlertDialog({
                title : 'You denied permission.',
                // We also end up here if the NSLocationAlwaysUsageDescription is missing from tiapp.xml in which case e.error will say so
                message : e.error
            }).show();
        }
    });
}

}


function open(e) {
    var nextWin = core.createWindow({
        controllerName : "loginActivity"
    });
    if (OS_ANDROID) {
        nextWin.fbProxy = Alloy.Globals.Facebook.createActivityWorker({lifecycleContainer: nextWin});
    }
    nextWin.addEventListener("postlayout", function checkGPS(e){
        nextWin.removeEventListener("postlayout", checkGPS);
        if(Ti.Geolocation.getLocationServicesEnabled() === false) {
            if(OS_ANDROID){
                var alertDlg = Titanium.UI.createAlertDialog({
                    title:'GPS apagado', 
                    message:'El GPS está apagado. Enciéndelo en ajustes.',
                    buttonNames: ['No encender el gps', 'Abrir ajustes']
                });
                alertDlg.cancel = 0;

                alertDlg.addEventListener('click', function(e){
                    if(!e.cancel) {
                        //open up the settings page
                        var settingsIntent = Titanium.Android.createIntent({
                            action: 'android.settings.LOCATION_SOURCE_SETTINGS'
                        });
                        Titanium.Android.currentActivity.startActivity(settingsIntent);
                    }
                });

                alertDlg.show();
            }
            else {
                alert("No se detecta tu ubicación, te recomendamos encender el GPS antes de iniciar la aplicación.");
            }
        }
    });
    nextWin.open();
}

and alloy.js

(function(){
    var ACS = require('ti.cloud'),
        env = Ti.App.deployType.toLowerCase() === 'production' ? 'production' : 'development',
        username = Ti.App.Properties.getString('acs-username-'+env),
        password = Ti.App.Properties.getString('acs-password-'+env);

    // if not configured, just return
    if (!env || !username || !password) { return; }
    /**
     * Appcelerator Cloud (ACS) Admin User Login Logic
     *
     * fires login.success with the user as argument on success
     * fires login.failed with the result as argument on error
     */
    ACS.Users.login({
        login:username,
        password:password,
    }, function(result){
        Ti.API.info("Yes, logged in.");
        if (env==='development') {
            Ti.API.info('ACS Login Results for environment `'+env+'`:');
            Ti.API.info(result);
        }
        if (result && result.success && result.users && result.users.length){
            Ti.App.fireEvent('login.success',result.users[0],env);
        } else {
            Ti.App.fireEvent('login.failed',result,env);
        }
    });

})();

Alloy.Globals.Facebook = require('facebook');


var T = function (name) { 
    return require('T/' + name); 
};

T('trimethyl');

var Notifications = T('notifications');
Notifications.onReceived = function(e) {
    console.log("onreceived "+JSON.stringify(e));
    alert(e.data);
};
Notifications.subscribe();
console.log("token "+Notifications.getRemoteDeviceUUID());
1
Share code snippet of alloy.js & index.jsPrashant Saini
If you put in a log at the very top of index.js is it getting logged? Also can you comment the entire alloy.js and then uncomment portions of it so it which part of it is causing the issue? Also please use logs instead of alerts.Soumya
I have no access to logs, that is why I tried with alerts.Guy who types fast
The app was installed to the iPhone via iTunes, it's completely disconnected from the computer, when I run it from the computer or the simulator it works well.Guy who types fast

1 Answers

0
votes

For future references.

I had to test step by step, block by block and line by line using a single alert at a time to find out what part of the code was causing the application to crash.

I did find out that 2 separate files were calling each other like require("file2") in file 1 and require("file1") in file 2. Although I don't know why this problem/bug/whatever happened only in distribution ad-hoc mode and not when running the app directly from the computer.