ການນຳເຂົ້າຈາກ Content Hub ແລະ URLdispatcher¶
"hooks": {
"openstore": {
"apparmor": "openstore/openstore.apparmor",
"desktop": "openstore/openstore.desktop",
"urls": "openstore/openstore.url-dispatcher",
"content-hub": "openstore/openstore-contenthub.json"
}
},
ໃນຄູ່ມືກ່ອນໜ້ານີ້ ພວກເຮົາໄດ້ເຫັນເລັກນ້ອຍກ່ຽວກັບວິທີການເຮັດວຽກຂອງ Content Hub. ໃນຄູ່ມືນີ້ ພວກເຮົາຈະເຫັນວ່າ URLdispatcher ເຮັດວຽກແນວໃດ ແລະ ວິທີຈັດການຂໍ້ມູນທີ່ນຳເຂົ້າຈາກ Content Hub.
ຈັດການຂໍ້ມູນຈາກ Content Hub¶
ແອັບ OpenStore ຈາກ open-store.io¶
ໜຶ່ງໃນວິທີທີ່ງ່າຍທີ່ສຸດໃນການທົດສອບແອັບ, ແມ່ນການສົ່ງ test click ໃຫ້ຕົວທ່ານເອງໃນ Telegram, ແລະ ເປີດໄຟລ໌ click ນັ້ນດ້ວຍ OpenStore ຜ່ານ Content Hub:
ຖ້າພວກເຮົາແຕະໃສ່ແອັບ OpenStore, ມັນຈະເປີດຂຶ້ນ ແລະ ມັນຈະຖາມວ່າພວກເຮົາຕ້ອງການຕິດຕັ້ງໄຟລ໌ click ບໍ່. ມາເບິ່ງ ໂຄ້ດ Main.qml ຂອງແອັບ ເພື່ອເບິ່ງວ່າມັນເຮັດແນວໃດ:
Connections {
target: ContentHub
onImportRequested: {
var filePath = String(transfer.items[0].url).replace('file://', '')
print("Should import file", filePath)
var fileName = filePath.split("/").pop();
var popup = PopupUtils.open(installQuestion, root, {fileName: fileName});
popup.accepted.connect(function() {
contentHubInstallInProgress = true;
PlatformIntegration.clickInstaller.installPackage(filePath)
})
}
}
ທ່ານເຫັນອົງປະກອບ Connections ທີ່ກຳນົດເປົ້າໝາຍໄປທີ່ ContentHub ບໍ່? ເມື່ອມັນໄດ້ຮັບສັນຍານ onImportRequested, ມັນຈະເອົາ url ຂອງຂໍ້ມູນທີ່ສົ່ງມາຈາກ Content Hub (transfer.items[0].url ແມ່ນ url ຂອງຂໍ້ມູນທຳອິດທີ່ສົ່ງມາ) ແລະ ເປີດອົງປະກອບ PopUp ເພື່ອໃຫ້ຜູ້ໃຊ້ຕິດຕັ້ງ click.
ແລ້ວ URLdispatcher ເດ?¶
URL dispatcher ແມ່ນຊອບແວທີ່ຄ້າຍຄືກັບ Content Hub, ທີ່ເຮັດໃຫ້ຊີວິດຂອງພວກເຮົາງ່າຍຂຶ້ນໃນການພະຍາຍາມເລືອກແອັບທີ່ຖືກຕ້ອງສຳລັບໂປຣໂຕຄໍໃດໜຶ່ງ. ຕົວຢ່າງ: ພວກເຮົາອາດຈະຕ້ອງການເປີດເວັບບຣາວເຊີເມື່ອແຕະໃສ່ໂປຣໂຕຄໍ http. ຖ້າພວກເຮົາແຕະໃສ່ລິ້ງແຜນທີ່ ມັນຈະສະດວກຖ້າເປີດດ້ວຍ uNav ຫຼື ເປີດລິ້ງ twitter ໃນແອັບ Twitter! ມັນເຮັດວຽກແນວໃດ?
URLdispatcher ເລືອກວ່າແອັບໃດ (ອີງຕາມ manifest.json ຂອງພວກເຂົາ) ຈະເປີດລິ້ງໃດໜຶ່ງ.
ມາເບິ່ງວ່າແອັບນຳທາງຂອງພວກເຮົາມີລັກສະນະແນວໃດທາງໃນ. manifest ຂອງ uNav ສະແດງ hooks ພິເສດສຳລັບ URLdispatcher ໃນ ໂຄ້ດ manifest.json ຂອງມັນ:
1 [
2 {
3 "protocol": "http",
4 "domain-suffix": "map.unav.me"
5 },
6 {
7 "protocol": "http",
8 "domain-suffix": "unav-go.github.io"
9 },
10 {
11 "protocol": "geo"
12 },
13 {
14 "protocol": "http",
15 "domain-suffix": "www.openstreetmap.org"
16 },
17 {
18 "protocol": "http",
19 "domain-suffix": "www.opencyclemap.org"
20 },
21 {
22 "protocol": "https",
23 "domain-suffix": "maps.google.com"
24 }
25 ]
ນີ້ໝາຍຄວາມວ່າລິ້ງທີ່ມີລັກສະນະຄື http://map.unav.me/xxxxx,xxxxx ຈະຖືກເປີດໃນ uNav. ແລະ ນັ້ນຖືກກຳນົດໄວ້ໃນແຖວ 2 ແລະ 3, ບ່ອນທີ່ມັນຊອກຫາໂປຣໂຕຄໍ http ຕາມດ້ວຍ map.unav.me.
ນອກຈາກນັ້ນ, URI ທີ່ມີຮູບແບບ geo:xxx,xxx ຄວນເປີດໃນ uNav, ຕາມທີ່ກຳນົດໄວ້ໃນແຖວ 11.
ແລະ ພວກເຮົາຈັດການ URL ທີ່ໄດ້ຮັບແນວໃດ?¶
ຫຼັງຈາກ URLdispatcher ສົ່ງລິ້ງໄປຍັງແອັບທີ່ກ່ຽວຂ້ອງ, ພວກເຮົາຈຳເປັນຕ້ອງຈັດການ URL ຫຼື URI ນັ້ນໃນແອັບເປົ້າໝາຍ. ມາເບິ່ງວິທີເຮັດ:
ໃນໄຟລ໌ qml ຫຼັກ, ພວກເຮົາຕ້ອງເພີ່ມໂຄ້ດບາງຢ່າງເພື່ອໃຫ້ຮູ້ວ່າຈະເຮັດແນວໃດກັບ dispatched URL. ມາເບິ່ງວິທີທີ່ແອັບ Linphone ຈັດການສິ່ງນີ້ໂດຍການເພີ່ມ ການເຊື່ອມຕໍ່ໄປຍັງ URI Handler ດ້ວຍອົງປະກອບ Connections ໂດຍຕັ້ງ UriHandler ເປັນເປົ້າໝາຍ.
Connections {
target: UriHandler
onOpened: {
console.log('Open from UriHandler')
if (uris.length > 0) {
console.log('Incoming call from UriHandler ' + uris[0]);
showIncomingCall(uris[0]);
}
}
}
ໂຄ້ດນີ້ຈະຈັດການ URI ໃນຮູບແບບ linphone://sip:xxx@xxx.xx ເມື່ອແອັບເປີດຢູ່. ແຕ່ພວກເຮົາຕ້ອງເຮັດແນວໃດເພື່ອຈັດການລິ້ງນີ້ເມື່ອແອັບປິດຢູ່?
ພວກເຮົາຈຳເປັນຕ້ອງເພີ່ມ ໂຄ້ດພິເສດ ເລັກນ້ອຍ ເຊິ່ງຈະກວມເອົາສອງກໍລະນີ: 1) ພວກເຮົາໄດ້ຮັບໜຶ່ງ URL 2) ພວກເຮົາໄດ້ຮັບຫຼາຍກວ່າໜຶ່ງ URL
ມາກວດເບິ່ງວ່າ Qt.application.arguments ບໍ່ຫວ່າງເປົ່າ ຫຼື ບໍ່ ແລະ ຖ້າບໍ່, ມີ argument ໃດທີ່ກົງກັບຮູບແບບ URI ຂອງພວກເຮົາ.
Component.onCompleted: {
//Check if opened the app because we have an incoming call
if (Qt.application.arguments && Qt.application.arguments.length > 0) {
for (var i = 0; i < Qt.application.arguments.length; i++) {
if (Qt.application.arguments[i].match(/^linphone/)) {
console.log("Incoming Call on Closed App")
showIncomingCall(Qt.application.arguments[i]);
}
}
}
//Start timer for Registering Status
checkStatus.start()
}
ຢ່າລືມກວດເບິ່ງວ່າ %u (ເພື່ອຮັບ 1 URL) ຫຼື %U (ເພື່ອຮັບ 1 ຫຼື ຫຼາຍກວ່າ URLs) ມີຢູ່ໃນແຖວ Exec ໃນໄຟລ໌ .desktop ຂອງແອັບ.
ເຄື່ອງມື¶
ຈາກ command line, ຄຳສັ່ງ lomiri-url-dispatcher-dump ຈະໃຫ້ລາຍຊື່ເຕັມຂອງ protocol schemes ທີ່ລົງທະບຽນ ແລະ ແອັບທີ່ກ່ຽວຂ້ອງ.
ເຄື່ອງມືທີ່ມີປະໂຫຍດອີກອັນໜຶ່ງ, ແຕ່ບໍ່ໄດ້ຕິດຕັ້ງໂດຍຄ່າເລີ່ມຕົ້ນໃນອຸປະກອນແມ່ນ lomiri-url-dispatcher-tools, ມັນອະນຸຍາດໃຫ້ທ່ານຈຳລອງການເອີ້ນຈາກແອັບພາກສ່ວນທີສາມ. ເຊັ່ນ: lomiri-url-dispatcher https://youtu.be/CIX-a-i6B1w ຈະເປີດ youtube webapp.
ເພື່ອຕິດຕັ້ງ, ເຮັດໃຫ້ partition ຂອງທ່ານຂຽນໄດ້ (sudo mount -o rw,remount /) ແລະ ຕິດຕັ້ງມັນຜ່ານ sudo apt install lomiri-url-dispatcher-tools
ຈະເກີດຫຍັງຂຶ້ນຖ້າມີຫຼາຍກວ່າໜຶ່ງແອັບທີ່ມີການກຳນົດປະເພດ URL ດຽວກັນ?¶
ຄຳຖາມທີ່ດີຫຼາຍ. ຈະເກີດຫຍັງຂຶ້ນຖ້າພວກເຮົາແຕະໃສ່ລິ້ງ Twitter? URL ດັ່ງກ່າວຖືກຈັດການໂດຍ URLdispatcher ໃນຖານະໂປຣໂຕຄໍ http ຫຼື ໂປຣໂຕຄໍ http://twitter ແນວໃດ?
ຈະເກີດຫຍັງຂຶ້ນຖ້າສອງແອັບມີໂປຣໂຕຄໍທີ່ກຳນົດໄວ້ຄືກັນ?
ຕອນນີ້ເຖິງເວລາທີ່ຈະທົດສອບ ແລະ ແບ່ງປັນຜົນລັດໃນຄູ່ມືຖັດໄປ.