I have written the following code:
if (OS_ANDROID) {
function showDialog() {
// Android logic
}
function closeDialog() {
// Android logic
}
}
if (OS_IOS) {
function showDialog() {
// iOS logic
}
function closeDialog() {
// iOS logic
}
}
For some reason when I run on Android it executes the code for iOS. So when I had a look at the generated files in the resources directory I see that generated code just removes the if (OS_ANDROID)
and if (OS_IOS)
blocks and leaves both codes (iOS and Android) on the file.
Currently I'm running on the emulators, but I'm guessing it should work just the same.
It's not Titanium issue you are running into, rather it's a JavaScript programming error you are doing here, & solution to this error is called as JavaScript's Function Hoisting
You cannot just simply declare functions inside if-else conditions because if-else is a block & blocks do not contain function declarations.
That's why Titanium resources files are showing both methods because methods are not allowed to be declared inside if-else, and if you do, then they will be considered as in global scope or more accurately in the parent scope of if-else.
So, you can make your code work like this:
function showDialog() {
if (OS_IOS) {
// ios logic
} else if (OS_ANDROID) {
// android logic
}
}
function closeDialog() {
if (OS_IOS) {
// ios logic
} else if (OS_ANDROID) {
// android logic
}
}