A NativeScript Module for inner-app communication URI handling
Android
Add following code to your AndroidManifest.xml, where you can find through /app/App_Resources/Android/AndroidManifest.xml
<activity android:launchMode="singleTop">
<!-- Copy from here -->
<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:scheme="yourscheme" />
</intent-filter>
<!-- Copy end here -->
</activity>
NOTE: the attribute android:launchMode="singleTop"
prevent OS start multiple activities.
iOS
Add following code to your Info.plist, where you can find it in /app/App_Resources/iOS/Info.plist
<dict>
<!-- Copy from here -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>your.app.id</string>
</dict>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>yourscheme</string>
</array>
</dict>
</array>
<!-- Copy end here -->
</dict>
NOTE: After modified AndroidManifest.xml or Info.plist, please remove the entire platform and re-add the platform. This is also recommended by official document.
Run command
tns plugin add tns-urihandler
or
tns plugin add tns-urihandler-1.0.0.tgz
imcoming URI: myapp://Jacky:Passw0rd@home/path/to/my/page?from=anotherApp#fragment
import { URIHandler } from 'tns-urihandler';
export class MyApp{
foo(): void{
let uriHandler = new URIHandler();
console.log(uriHandler.getURI()); // myapp://Jacky:Passw0rd@home/path/to/my/page?from=anotherApp#fragment
}
}
uriHandler.getURI(); // myapp://Jacky:Passw0rd@home/path/to/my/page?from=anotherApp#fragment
uriHandler.getHost(); // home
uriHandler.getFragment(); // fragment
uriHandler.getScheme(); // myapp
uriHandler.getQuery(); // from=anotherApp
uriHandler.getPath(); // path/to/my/page
uriHandler.getUser(); // Jacky (if there's any Username)
uriHandler.getPassword(); // Passw0rd (if there's any Password)
// experimental function, returns object
uriHandler.search(); // { form: 'antherApp' }
I would like to thank hypery2k's nativescript-urlhandler. My inspiration comes from his great work.