Step 1:
Install the deep link Cordova plugin
https://ionicframework.com/docs/native/deeplinks
ionic cordova plugin add ionic-plugin-deeplinks --variable URL_SCHEME=myapp --variable DEEPLINK_SCHEME=https --variable DEEPLINK_HOST=example.com --variable ANDROID_PATH_PREFIX=/
npm install @ionic-native/deeplinks
Step 2:
Create actions.xml file and place in the following directory
resource/android/xml/actions.xml
<?xml version="1.0" encoding="utf-8"?>
<actions>
<action intentName="actions.intent.OPEN_APP_FEATURE">
<fulfillment urlTemplate="https://your_deeplinkurl_place_here/open{?featureName}">
<parameter-mapping
intentParameter="feature"
urlParameter="featureName" />
</fulfillment>
<parameter name="feature">
<entity-set-reference entitySetId="FeatureEntitySet" />
</parameter>
</action>
<entity-set entitySetId="FeatureEntitySet">
<entity
name="my trip summary"
identifier="Trip" />
<entity
name="Profile"
identifier="Profile" />
<entity
identifier="RECORDS"
name="records"/>
</entity-set>
</actions>
Step 3: Add this line in config.xml which is in the ionic Cordova application
<preference name="android-targetSdkVersion" value="29" />
<platform name="android">
<config-file parent="/manifest/application" target="app/src/main/AndroidManifest.xml" xmlns:android="http://schemas.android.com/apk/res/android">
<meta-data android:name="com.google.android.actions" android:resource="@xml/actions" />
</config-file>
<resource-file src="resources/android/xml/actions.xml" target="app/src/main/res/xml/actions.xml" />
</platform>
Step 4: Open the navigation controller or app.component.ts
import the deep link class in app.module.ts and app.component.ts
import { Deeplinks } from "@ionic-native/deeplinks/ngx";
in constructor:
private deeplinks: Deeplinks,
setupDeeplink()
{
let featureName = "";
this.deeplinks.route({ "/:slug": "posts" }).subscribe(
(match) => {
featureName = match.$args["featureName"];
console.log("feature Name", featureName);
this.navigatePageThroughDeeplink(featureName);
},
(nomatch) => {
console.error("Got a deeplink that didn't match", nomatch);
}
);
}
navigatePageThroughDeeplink(featureName) {
console.log("navigatePage feature Name", featureName);
switch (featureName) {
case "home":
this.router.navigate(['home']);
break;
case "tour":
this.router.navigate(['tour']);
break;
case "profile":
case "Profile":
this.router.navigate(['profile']);
break;
case "travel":
case "Travel":
this.router.navigate(['travel']);
break;
case "faq":
this.router.navigate(['faq']);
break;
case "chat":
this.router.navigate(['chat']);
break;
case "notification":
case "Notification":
this.router.navigate(['notification']);
break;
case "trip":
this.router.navigate(['trip']);
break;
case "ticket":
this.router.navigate(['ticket']);
break;
case "availability":
this.router.navigate(['availablity']);
break;
case "flight":
this.router.navigate(['flight']);
break;
default:
console.log("default", featureName);
this.router.navigate(['home']);
break;
}
}
Comments
Post a Comment