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