Deep Link คือ URL ที่ Ionic App (ทั้ง Mobile และ Web) ใช้อ้างอิงถึงตำแหน่งของข้อมูล/หน้า หนึ่งๆ ที่อยู่บนแอพลิเคชั่นโดยตรง มีประโยชน์ในการอำนวยความสะดวกให้กับ User ในการเข้าถึงข้อมูลหรือหน้านั้นๆ โดยตรงจากแหล่งภายนอก เช่น การแชร์ หรือจาก Search Result
Deep Link ของ Ionic จะอยู่ในฟอร์แมต:
http(s)://<app_name_or_server_name>:<port>/#/<segment>
จุดสังเกตคือจะมี Hash (#) ขั้นอยู่ระหว่างส่วนของแอพลิชั่น/เซิร์ฟเวอร์ และ Segment (หรือ path) เนื่องจาก Ionic เป็น Single-Page Web Application นั่นเอง
แนวทาง
การสร้าง Deep Link ให้ Page ต่างๆ บน Ionic มีองค์ประกอบสำคัญต่อไปนี้
- การสร้าง Deep Link จะทำได้เฉพาะในระดับของ Page Level เท่านั้น (ถูกบังคับด้วยการใช้ Module
)IonicPageModule
- แต่ละ Page ที่จะมี Deep Link ของตัวเอง ต้องมี Module ของตัวเอง โดย
จะใช้ Class ของ Page เป็น Parameter ดังนั้น แต่ละ Module จึงมีเพจที่มี Deep Link ได้แค่เพจเดียวIonicPageModule`
- การ Load Module ของเพจเหล่านี้จะเป็นการ Load แบบ Lazy Loading เท่านั้น (ซึ่งมีข้อดีคือทำให้การ Transpile ตอนเริ่มแอพลิเคชั่นเร็วขึ้น) ดังนั้นเราจึงไม่ต้องประกาศชื่อ Module เหล่านี้ใน app.module.ts
- อย่างไรก็ตาม ตัวแอพลิเคชั่นเองต้องมี Page ของตัวเอง (default คือ HomePage) ซึ่งเราไม่สามารถเพิ่ม Deep Link ที่นอกเหนือจากค่า Default (คือ Home) ของ Home Page ได้อีก
ขั้นตอน
ขั้นที่ 1 สมมติว่าเรากำลังจะสร้างเพจชื่อ search ให้มี Deep Link ขั้นแรกเราจะให้ Ionic สร้างไฟล์ที่จำเป็นให้ด้วยคำสั่ง
ionic generate page search
Ionic จะสร้าง Folder และไฟล์ที่จำเป็นให้โดยอัตโนมัติ
ขั้นที่ 2 แก้ไขไฟล์ pages/search/search.module.ts
...
import { IonicPageModule } from 'ionic-angular';
import { SearchPage } from './search';
...
@NgModule({
...
imports: [
...
IonicPageModule.forChild(SearchPage),
...
],
entryComponents: [
SearchPage // factoring the page
]
}]
export class SearchPageModule {}
ขั้นที่ 3 แก้ไขไฟล์ pages/search/search.ts
import { Component } from '@angular/core';
...
@IonicPage({
name: 'search', // for navCtrl.push()
segment: 'search' // becomes http(s)://<server>/#/search URL
})
@Component({
...
ขั้นที่ 4 ทดสอบโดยการรัน
ionic serve
เปิด Browser แล้วลองเข้า http://localhost:8100/#/search
References
- [IonicPage – Link to Pages with URL like a Pro](https://blog.khophi.co/ionicpage-link-pages-url-like-pro/)