உள்ளடக்க நடுவண் மற்றும் urldispatcher இலிருந்து இறக்குமதி செய்தல்

"hooks": {
    "openstore": {
        "apparmor": "openstore/openstore.apparmor",
        "desktop": "openstore/openstore.desktop",
        "urls": "openstore/openstore.url-dispatcher",
        "content-hub": "openstore/openstore-contenthub.json"
    }
},

முந்தைய வழிகாட்டியில் உள்ளடக்க நடுவண் எவ்வாறு செயல்படுகிறது என்பதைப் பற்றி கொஞ்சம் பார்த்தோம். இந்த வழிகாட்டியில் urldispatcher எவ்வாறு செயல்படுகிறது மற்றும் உள்ளடக்க மையத்திலிருந்து இறக்குமதி செய்யப்பட்ட தரவை எவ்வாறு கையாள்வது என்பதைக் காண்போம்.

உள்ளடக்க மையத்திலிருந்து தரவைக் கையாளவும்

../../_images/02ichu.png

திறந்த-STORE.IO இலிருந்து OpenStore பயன்பாடு

ஒரு பயன்பாட்டைச் சோதிப்பதற்கான எளிதான வழிகளில் ஒன்று, டெலிகிராமில் ஒரு சோதனை கிளிக்கை உங்களுக்கு அனுப்புவதும், அந்தக் சொடுக்கு கோப்பை OpenStore உடன் உள்ளடக்க மையத்தின் மூலம் திறப்பதும் ஆகும்:

../../_images/03ichu.png

நாங்கள் ஓபன்ச்டோர் பயன்பாட்டில் தட்டினால், அது திறக்கப்படும், மேலும் சொடுக்கு கோப்பை நிறுவ விரும்புகிறீர்களா என்று கேட்கும். பயன்பாட்டின் 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)
            })
        }
}

ContentHub ஐ குறிவைக்கும் இணைப்புகள் உறுப்பை நீங்கள் காண்கிறீர்களா? இது சமிக்ஞை மேலோட்டத்தைப் பெறும்போது, உள்ளடக்க மையத்திலிருந்து அனுப்பப்பட்ட தரவின் முகவரி ஐ அது எடுக்கும் (transfer.items[0].url is the url of the first data sent) and open a PopUp element to let the user install the click.

Urldispatcher பற்றி என்ன?

முகவரி அனுப்பியவர் என்பது உள்ளடக்க மையத்தைப் போன்ற ஒரு மென்பொருளாகும், இது ஒரு குறிப்பிட்ட நெறிமுறைக்கு சரியான பயன்பாட்டைத் தேர்வுசெய்ய எங்கள் வாழ்க்கையை எளிதாக்குகிறது. எடுத்துக்காட்டாக: HTTP நெறிமுறையைத் தட்டும்போது வலை உலாவியைத் திறக்க விரும்புகிறோம். வரைபட இணைப்பில் நாம் தட்டினால், அதை USAV உடன் திறப்பது அல்லது ட்விட்டர் பயன்பாட்டில் ட்விட்டர் இணைப்பைத் திறப்பது எளிது! அது எவ்வாறு செயல்படுகிறது?

Urldispatcher எந்த பயன்பாட்டைத் தேர்ந்தெடுக்கிறது (அவற்றின் manifest.json இன் படி) ஒரு குறிப்பிட்ட இணைப்பைத் திறக்கும்.

../../_images/05ichu.png

எங்கள் வழிசெலுத்தல் பயன்பாடு உள்ளே எப்படி இருக்கிறது என்று பார்ப்போம். uNav இன் மேனிஃபெச்ட் அதன் manifest.json குறியீட்டில் இல் URLdispatcher க்கான சிறப்பு ஊக்குகளைக் காட்டுகிறது:

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,எக்ச்எக்ச்எக்ச்எக்ச் போன்ற ஒரு இணைப்பு USAV இல் திறக்கப்படும். இது 2 மற்றும் 3 வரிகளில் வரையறுக்கப்பட்டுள்ளது, அங்கு இது நெறிமுறை http ஐத் தொடர்ந்து MAP.Unav.me.

மேலும், ஒரு யூரி வடிவமைக்கப்பட்ட சியோ: XXX, XXX AVAV இல் திறக்கப்பட வேண்டும், ஏனெனில் இது 11 வது வரிசையில் வரையறுக்கப்பட்டுள்ளது.

பெறப்பட்ட முகவரி ஐ எவ்வாறு நிர்வகிப்பது?

Urldispatcher அந்த இணைப்பை நிருபர் பயன்பாட்டிற்கு அனுப்பிய பிறகு, அந்த முகவரி அல்லது யூரி ஐ இலக்கு பயன்பாட்டில் கையாள வேண்டும். அதை எப்படி செய்வது என்று பார்ப்போம்:

முதன்மையான QML கோப்பில், அனுப்பப்பட்ட முகவரி உடன் என்ன செய்வது என்பதை அறிய சில குறியீடுகளைச் சேர்க்க வேண்டும். இணைப்பு யுஆர்ஐ ஏண்ட்லர் ஒரு இணைப்பு அமைப்புடன் urihandlerler இலக்காக.

Connections {
    target: UriHandler

    onOpened: {
        console.log('Open from UriHandler')

        if (uris.length > 0) {
            console.log('Incoming call from UriHandler ' + uris[0]);
            showIncomingCall(uris[0]);
        }
    }
}

பயன்பாடு திறக்கப்படும் போது லின்ஃபோன்://SIP:XXX@xxx.xx வடிவத்தில் இந்த குறியீடு ஒரு யூரி ஐ நிர்வகிக்கும். பயன்பாடு மூடப்படும் போது இந்த இணைப்பைக் கையாள நாம் என்ன செய்ய வேண்டும்?

சிறிது கூடுதல் குறியீட்டை இரண்டு நிகழ்வுகளை உள்ளடக்கும்: 1) நாம் ஒரு முகவரி 2) ஒரு முகவரி ஐ விட அதிகமாகப் பெறுகிறோம்

Qt.application.arguments காலியாக இல்லாவிட்டால், இல்லையென்றால், ஏதேனும் உரையாடல் எங்கள் யூரி வடிவத்துடன் பொருந்தினால்.

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()
}

Remember to check that %u (to receive 1 URL) or %U (to receive 1 or more URLs) is present under the Exec line in the .desktop file of the app.

கருவிகள்

கட்டளை வரியிலிருந்து, லோமிரி-யுஆர்எல்-டிச்பாட்சர்-டம்ப் கட்டளை பதிவுசெய்யப்பட்ட நெறிமுறை திட்டங்களின் முழு பட்டியலையும் அவற்றுடன் தொடர்புடைய பயன்பாட்டையும் உங்களுக்கு வழங்கும்.

மற்றொரு பயனுள்ள கருவி, ஆனால் கருவிளில் இயல்புநிலையாக நிறுவப்படாதது லோமிரி-யுஆர்எல்-டிச்பாட்சர்-டூல்ச், இது மூன்றாம் தரப்பு பயன்பாட்டின் அழைப்பை உருவகப்படுத்த உங்களை அனுமதிக்கிறது. எ.கா: லோமிரி-யுஆர்எல்-டிச்பாட்சர் https://youtu.be/CIX-a-i6B1w YouTube வலைபயன்பாடுபைத் தொடங்கும்.

நிறுவ, இது உங்கள் பகிர்வை எழுதக்கூடியதாக ஆக்குகிறது (sudo mount -o rw,remount /) மற்றும் அதை sudo apt install lomiri-url-dispatcher-tools வழியாக நிறுவவும்

ஒன்றுக்கு மேற்பட்ட பயன்பாட்டில் ஒரே முகவரி வகை வரையறுக்கப்பட்டால் என்ன ஆகும்?

ஒரு நல்ல கேள்வி. ட்விட்டர் இணைப்பில் தட்டினால் என்ன ஆகும்? அத்தகைய முகவரி urldispatcher ஆல் நெறிமுறை http அல்லது நெறிமுறை http://twitter ஆகியவற்றால் எவ்வாறு கையாளப்படுகிறது?

இரண்டு பயன்பாடுகளில் ஒரே வரையறுக்கப்பட்ட நெறிமுறை இருந்தால் என்ன ஆகும்?

இப்போது சில சோதனைகளைச் செய்து அடுத்த வழிகாட்டியில் முடிவுகளைப் பகிர்ந்து கொள்ள வேண்டிய நேரம் இது.