Quick Example of registering a scheme in TiApp.xml, implementing the code in app.js / alloy.js
-
-
Save jasonkneen/5736738 to your computer and use it in GitHub Desktop.
// 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> |
Looks like line 18 should be return returnObj
(variable set on line 4)
Hi , when i hit URLSCHEMENAME from a mobile browser say chrome , it always searches it in google.Can you please help me.
Fixed.
Replace URLSCHEMENAME with your own - don't use this one!
Can't open my url with custom scheme from gmail or default android browser. It's possible?
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?
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?
Is this still working as supposed to? What does line #20 do in TiApp.xml ? url="app.js"
does not make sense to me
Is line #19 required?
https://gist.github.com/jasonkneen/5736738#file-tiapp-xml-L19