Skip to content

Instantly share code, notes, and snippets.

@jasonkneen
Last active May 28, 2021 16:48
Show Gist options
  • Star 28 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save jasonkneen/5736738 to your computer and use it in GitHub Desktop.
Save jasonkneen/5736738 to your computer and use it in GitHub Desktop.
Quick example of registering a URLScheme in a Titanium app using the TiApp.xml without info.plist file. Just add the following into your TiApp.xml (I put it under the </iphone> tag. Works on Android and iOS.

Quick Example of registering a scheme in TiApp.xml, implementing the code in app.js / alloy.js

// points for getting this shorter using regex
function urlToObject(url) {
var returnObj = {};
url = url.replace('URLSCHEMENAME://?', '');
var params = url.split('&');
params.forEach(function(param) {
var keyAndValue = param.split('=');
returnObj[keyAndValue[0]] = decodeURI(keyAndValue[1]);
});
return returnObj;
}
function processArgs() {
if (Ti.App.getArguments().url) {
urlToObject(Ti.App.getArguments().url);
}
}
// on launch
processArgs();
// on resume
Ti.App.addEventListener("resumed", function(){
processArgs();
});
<ios>
<plist>
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.yourdomain.yourappprefix</string>
<key>CFBundleURLSchemes</key>
<array>
<string>URLSCHEMENAME</string>
</array>
</dict>
</array>
</dict>
</plist>
</ios>
<android xmlns:android="http://schemas.android.com/apk/res/android">
<activities>
<activity url="app.js"
android:launchMode="singleTask" android:alwaysRetainTaskState="true">
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:host="" android:scheme="URLSCHEMENAME"/>
</intent-filter>
</activity>
</activities>
</android>
@Gertjancom
Copy link

I assume this tag in is some Titanium uses to generate stuff for the AndroidManifest.xml right? I get a generated activity in there, but I'm missing the declared intent-filters. Any idea what I'm doing wrong?

@cauboy
Copy link

cauboy commented Mar 15, 2015

I've the same problem as @GertjanSmits. Activity is listed in the generated AndroidManifest.xml but there is no <intent-filter> tag within the <activity> tag. Does anyone have an idea why?

@bert-w
Copy link

bert-w commented Feb 21, 2017

Is this still working as supposed to? What does line #20 do in TiApp.xml ? url="app.js" does not make sense to me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment