URL Scheme: τι είναι, πώς λειτουργεί και χρησιμοποιείται στην ανάπτυξη

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-05-14 Χρόνος ανάγνωσης: 8 λεπ

Το URL Scheme είναι ένα προσαρμοσμένο πρωτόκολλο URI που η εφαρμογή κινητού καταχωρεί στο λειτουργικό σύστημα για άνοιγμα μέσω συνδέσμων της μορφής myapp://path. Σύμφωνα με το RFC 3986, το σχήμα URI καθορίζει τη σύνταξη και τη σημασιολογία όλων των επόμενων στοιχείων της διεύθυνσης. Κατά το κλικ σε έναν τέτοιο σύνδεσμο, το σύστημα αναγνωρίζει την καταχωρημένη εφαρμογή μέσω μοναδικού αναγνωριστικού και την εκκινεί με τις παραμέτρους που εξάγονται από τον σύνδεσμο. Το Deep link βασισμένο στο URL Scheme παραμένει ο βασικός μηχανισμός πλοήγησης μεταξύ εφαρμογών σε πλατφόρμες κινητού, παρά την εμφάνιση πιο σύγχρονων εναλλακτικών.

Κύρια σημεία

  • URL Scheme — προσαρμοσμένο πρωτόκολλο συνδέσμων της μορφής myapp://path, το οποίο η εφαρμογή καταχωρεί για άνοιγμα από άλλες εφαρμογές ή το πρόγραμμα περιήγησης.
  • Σύνταξη περιλαμβάνει το σχήμα, τον κεντρικό υπολογιστή, τη διαδρομή και τις παραμέτρους query σύμφωνα με το πρότυπο RFC 3986, εξασφαλίζοντας ευέλικτη μεταφορά δεδομένων μεταξύ εφαρμογών.
  • iOS χρησιμοποιεί το CFBundleURLTypes στο Info.plist και τον εκπρόσωπο AppDelegate για την επεξεργασία εισερχόμενων URL Scheme με παραμέτρους πλοήγησης.
  • Android εφαρμόζει Intent Filter στο AndroidManifest.xml με καθορισμό action, category και data για τη δρομολόγηση deep link στην Activity-στόχο.
  • Περιορισμός — το URL Scheme δεν λειτουργεί όταν λείπει η εφαρμογή, κάτι που επιλύεται μέσω Universal Links στο iOS και App Links στο Android.

Τι είναι το URL Scheme;

URL Scheme — είναι ένα μοναδικό αναγνωριστικό πρωτοκόλλου που η εφαρμογή καταχωρεί στο λειτουργικό σύστημα για να λαμβάνει κλήσεις μέσω προσαρμοσμένων συνδέσμων. Όταν ο χρήστης κάνει κλικ σε έναν σύνδεσμο όπως myapp://profile/123, το σύστημα αναγνωρίζει την εφαρμογή που καταχώρησε το σχήμα myapp και της μεταβιβάζει τον έλεγχο με το πλήρες URI. Αυτός ο μηχανισμός επιτρέπει στις εφαρμογές να ανταλλάσσουν δεδομένα και να ανοίγουν η μία την άλλη χωρίς υποδομή διακομιστή.

Η ιδέα του URL Scheme προέρχεται άμεσα από τα πρότυπα ιστού RFC 3986, όπου το σχήμα URI είναι το πρώτο στοιχείο κάθε καθολικού αναγνωριστικού πόρου. Στην ανάπτυξη κινητού, αυτή η ιδέα έχει προσαρμοστεί για επικοινωνία μεταξύ εφαρμογών, όπου αντί για διακομιστή HTTP ενεργεί η ίδια η εφαρμογή που επεξεργάζεται τον σύνδεσμο.

Παραδείγματα γνωστών URL Scheme

Πολλές δημοφιλείς εφαρμογές καταχωρούν τα δικά τους URL Scheme για ενσωμάτωση με υπηρεσίες τρίτων. Για παράδειγμα, το Spotify χρησιμοποιεί το σχήμα spotify://, το Telegram — tg://, και το Instagram — instagram://. Οι προγραμματιστές συχνά δημιουργούν επίσης σχήμα της μορφής appname:// για εσωτερική πλοήγηση και δοκιμή οθονών.

Τα URL Scheme εξακολουθούν να χρησιμοποιούνται ευρέως σε push ειδοποιήσεις, εκστρατείες email και κωδικούς QR, όπου απαιτείται άμεση μετάβαση σε ένα συγκεκριμένο τμήμα της εφαρμογής. Ωστόσο, από το iOS 9 και το Android 6, εμφανίστηκαν εναλλακτικοί μηχανισμοί που σταδιακά συμπληρώνουν και αντικαθιστούν τα απλά σχήματα.

Σύνταξη URL Scheme: σχήμα, κεντρικός υπολογιστής και διαδρομή

Η δομή ενός προσαρμοσμένου URI υπακούει στη γενική προδιαγραφή RFC 3986 και αποτελείται από πολλά στοιχεία. Το σχήμα καθορίζεται πρώτο και διαχωρίζεται με άνω-κάτω τελεία από την υπόλοιπη διεύθυνση. Μετά το σχήμα μπορούν να ακολουθήσουν κεντρικός υπολογιστής, θύρα, διαδρομή, παράμετροι query και τμήμα, καθένα από τα οποία είναι προαιρετικό.

Η πλήρης σύνταξη έχει ως εξής: scheme://host/path?key=value#fragment. Το σχήμα είναι το μόνο υποχρεωτικό στοιχείο, τα υπόλοιπα καθορίζονται από τις ανάγκες της συγκεκριμένης υλοποίησης. Η διπλή κάθετος μετά το σχήμα προέρχεται ιστορικά από το HTTP και δεν είναι αυστηρά υποχρεωτική σύμφωνα με την προδιαγραφή, αλλά χρησιμοποιείται παντού ως σύμβαση.

Στοιχεία URI

Για την οπτική αναπαράσταση της δομής URI χρησιμοποιείται ένας πίνακας στοιχείων. Κάθε στοιχείο έχει τον δικό του σκοπό και επίπεδο υποχρεωτικότητας.

ΣτοιχείοΠαράδειγμαΥποχρεωτικότητα
SchememyappΝαι
HostprofileΌχι
Path/user/42Όχι
Query?id=42&tab=mainΌχι
Fragment#section2Όχι

Οι προγραμματιστές μπορούν ελεύθερα να επιλέξουν τη δομή URI, πράγμα που παρέχει ευελιξία αλλά δημιουργεί προβλήματα συμβατότητας μεταξύ διαφορετικών εκδόσεων της εφαρμογής. Συνιστάται η τεκμηρίωση της μορφής URL Scheme ως μέρος του δημόσιου API της εφαρμογής και η έκδοσή της κατά την αλλαγή.

Πώς λειτουργεί το URL Scheme στο iOS

Το iOS απαιτεί ρητή καταχώρηση κάθε URL Scheme στο αρχείο Info.plist του έργου. Ο προγραμματιστής προσθέτει έναν πίνακα CFBundleURLTypes, κάθε στοιχείο του οποίου περιέχει ένα αναγνωριστικό (CFBundleURLName) και μια λίστα υποστηριζόμενων σχημάτων (CFBundleURLSchemes). Μετά την καταχώρηση, το σύστημα κατευθύνει αυτόματα όλες τις εισερχόμενες κλήσεις προς τα καταχωρημένα σχήματα στην εφαρμογή.

Η επεξεργασία ενός εισερχόμενου URL Scheme γίνεται στον εκπρόσωπο της εφαρμογής μέσω της μεθόδου application(_:open:options:). Αυτή η μέθοδος λαμβάνει ένα αντικείμενο URL από το οποίο εξάγονται η διαδρομή και οι παράμετροι query για τη λήψη απόφασης πλοήγησης. Η επεξεργασία πρέπει να επιστρέφει μια τιμή Bool που υποδεικνύει την επιτυχία της λειτουργίας.

Επεξεργασία στο AppDelegate

Παρακάτω δίνεται ένα παράδειγμα υλοποίησης χειριστή URL Scheme στη γλώσσα Swift. Ο κώδικας δείχνει την εξαγωγή του κεντρικού υπολογιστή και των παραμέτρων query από το εισερχόμενο URI χρησιμοποιώντας το URLComponents.

swift
func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey: Any]
) -> Bool {
    let host = url.host
    let params = URLComponents(
        url: url,
        resolvingAgainstBaseURL: false
    )?.queryItems
    if host == "profile" {
        navigateToProfile(params)
    }
    return true
}

Η μέθοδος χρησιμοποιεί το URLComponents για ασφαλή ανάλυση των παραμέτρων query. Αυτή η προσέγγιση είναι προτιμότερη από τη χειροκίνητη ανάλυση της συμβολοσειράς, καθώς διαχειρίζεται αυτόματα την κωδικοποίηση ποσοστού και την αποκωδικοποίηση ειδικών χαρακτήρων στις τιμές των παραμέτρων.

Πώς λειτουργεί το URL Scheme στο Android

Το Android χρησιμοποιεί το σύστημα Intent Filter για τη δρομολόγηση deep link βάσει URL Scheme. Ο προγραμματιστής δηλώνει το φίλτρο στο AndroidManifest.xml μέσα στην ετικέτα Activity που πρέπει να επεξεργάζεται τον σύνδεσμο. Το φίλτρο περιέχει action VIEW, τις κατηγορίες BROWSABLE και DEFAULT, καθώς και την ετικέτα data με καθορισμό σχήματος, κεντρικού υπολογιστή και pathPrefix.

Όταν ο χρήστης κάνει κλικ σε έναν σύνδεσμο με προσαρμοσμένο σχήμα, το σύστημα ελέγχει τα Intent Filter όλων των εγκατεστημένων εφαρμογών. Εάν βρεθούν πολλές κατάλληλες εφαρμογές, εμφανίζεται στον χρήστη ένα παράθυρο διαλόγου επιλογής. Η κατηγορία BROWSABLE επιτρέπει την επεξεργασία του συνδέσμου από το πρόγραμμα περιήγησης.

Ρύθμιση Intent Filter

Παράδειγμα δήλωσης Intent Filter στο AndroidManifest.xml για επεξεργασία του σχήματος myapp σε Activity. Ο συνδυασμός action και category είναι υποχρεωτικός για τη σωστή δρομολόγηση deep link.

xml
<activity android:name=".MainActivity">
    <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="myapp"
            android:host="profile"
            android:pathPrefix="/user" />
    </intent-filter>
</activity>

Μετά τη ρύθμιση του φίλτρου, στην Activity πρέπει να κληθεί το intent.getData() για τη λήψη του URI. Είναι σημαντικό να ελέγχετε το intent και τα δεδομένα για null, καθώς η Activity μπορεί να εκκινηθεί χωρίς εισερχόμενο deep link, για παράδειγμα κατά την τυπική εκκίνηση από τον εκκινητή.

Μεταφορά παραμέτρων μέσω URL Scheme

Οι παράμετροι query στο URL Scheme μεταφέρονται μετά το ερωτηματικό σε μορφή κλειδί=τιμή, χωρισμένες με ampersand. Αυτή η μορφή είναι ταυτόσημη με τα αιτήματα HTTP και επεξεργάζεται εύκολα από τα τυπικά εργαλεία της πλατφόρμας. Οι παράμετροι πρέπει να κωδικοποιούνται χρησιμοποιώντας κωδικοποίηση ποσοστού για όλους τους χαρακτήρες που δεν ανήκουν στο επιτρεπόμενο σύνολο URI.

Παράδειγμα πλήρους συνδέσμου με παραμέτρους: myapp://profile?userId=42&source=email&ref=abc123. Μετά την εξαγωγή του URL, η εφαρμογή αναλύει διαδοχικά όλα τα query-items και βάσει των τιμών τους λαμβάνει απόφαση πλοήγησης στην οθόνη-στόχο.

Περιορισμός μήκους URI

Κατά τη μεταφορά σύνθετων δεδομένων είναι σημαντικό να λαμβάνεται υπόψη ο περιορισμός μήκους URI. Στο iOS, το μέγιστο μήκος URL Scheme περιορίζεται σε 2 KB, μετά το οποίο το σύστημα αποκόπτει τον σύνδεσμο. Στο Android, το όριο είναι περίπου 8 KB, αλλά η ακριβής τιμή εξαρτάται από την έκδοση του λειτουργικού συστήματος και τον κατασκευαστή της συσκευής. Για μεγάλους όγκους δεδομένων, συνιστάται η μεταφορά μόνο του αναγνωριστικού συνόδου μέσω URL Scheme και η φόρτωση των υπόλοιπων δεδομένων από τον διακομιστή.

Περιορισμοί και εναλλακτικές του URL Scheme

Το κύριο μειονέκτημα του URL Scheme — η αδυναμία επεξεργασίας του συνδέσμου εάν η εφαρμογή δεν είναι εγκατεστημένη στη συσκευή. Το πρόγραμμα περιήγησης εμφανίζει σφάλμα και ο χρήστης χάνει το πλαίσιο της μετάβασης. Για την επίλυση αυτού του προβλήματος, η Apple εισήγαγε τα Universal Links στο iOS 9 και η Google τα App Links στο Android 6. Και οι δύο μηχανισμοί καταχωρούνται μέσω ενός τομέα ιστού που συνδέεται με την εφαρμογή.

Τα Universal Links και App Links λειτουργούν όπως οι συνηθισμένοι σύνδεσμοι HTTPS, αλλά παρουσία της εφαρμογής την ανοίγουν χωρίς παράθυρο διαλόγου επιλογής. Εάν η εφαρμογή δεν είναι εγκατεστημένη, ο σύνδεσμος ανοίγει μια ιστοσελίδα στον ίδιο τομέα, διατηρώντας την εμπειρία χρήστη. Αυτό τα καθιστά την προτιμώμενη εναλλακτική για το περιβάλλον παραγωγής.

Μηχανισμοί fallback

Για το URL Scheme σε iOS και Android δεν υπάρχει ενσωματωμένος μηχανισμός fallback. Οι προγραμματιστές χρησιμοποιούν ενδιάμεσες λύσεις διακομιστή: ο σύνδεσμος οδηγεί σε μια ιστοσελίδα που ελέγχει την εγκατάσταση της εφαρμογής μέσω JavaScript και ανακατευθύνει είτε στο σχήμα είτε στο κατάστημα εφαρμογών. Τα Firebase Dynamic Links και Branch.io προσφέρουν έτοιμες λύσεις για αυτό το πρόβλημα με υποστήριξη deferred deep link, που καθορίζουν αυτόματα την κατάσταση εγκατάστασης και κατευθύνουν τον χρήστη χωρίς την ανάγκη ανάπτυξης δικού του διοχέτευσης διακομιστή.

Πρόσθετη πολυπλοκότητα προκύπτει κατά τη χρήση URL Scheme σε iOS 15+ και Android 12+, όπου οι κανόνες απορρήτου έχουν αυστηροποιηθεί. Το Safari αποκλείει προσπάθειες ανοίγματος μη καταχωρημένου σχήματος χωρίς προηγούμενη επιβεβαίωση, και το Android 12 περιορίζει την ορατότητα εγκατεστημένων εφαρμογών μέσω του PackageManager. Αυτές οι αλλαγές καθιστούν τη χρήση URL Scheme για αλληλεπίδραση μεταξύ εφαρμογών λιγότερο αξιόπιστη από ό,τι σε προηγούμενες εκδόσεις των πλατφορμών.

Συχνές Ερωτήσεις

Σε τι διαφέρει το URL Scheme από τα Universal Links;

Το URL Scheme χρησιμοποιεί προσαρμοσμένο πρωτόκολλο χωρίς κρυπτογράφηση, ενώ τα Universal Links λειτουργούν μέσω HTTPS με επαλήθευση τομέα. Τα Universal Links δεν εμφανίζουν παράθυρο διαλόγου επιλογής εφαρμογής και υποβάλλονται σε σωστή επεξεργασία όταν η εφαρμογή δεν είναι παρούσα στη συσκευή.

Μπορεί το URL Scheme να περιέχει κυριλλικούς χαρακτήρες;

Ναι, αλλά όλοι οι μη-ASCII χαρακτήρες πρέπει να κωδικοποιούνται μέσω percent-encoding σύμφωνα με το RFC 3986. Συνιστάται η αποφυγή κυριλλικών στο URL Scheme για τη διασφάλιση συμβατότητας με παλαιότερες εκδόσεις λειτουργικών συστημάτων και προγραμμάτων περιήγησης.

Πόσα URL Scheme μπορεί να καταχωρήσει μία εφαρμογή;

Δεν υπάρχουν περιορισμοί στον αριθμό σχημάτων ούτε στο iOS ούτε στο Android. Στην πράξη, οι εφαρμογές χρησιμοποιούν από ένα έως πέντε σχήματα. Για παράδειγμα, το Telegram καταχωρεί τα σχήματα tg://, t.me/, telegram:// και telegram.me://.

Πώς μπορώ να ελέγξω αν η συσκευή υποστηρίζει το URL Scheme μου;

Στο iOS χρησιμοποιείται η μέθοδος canOpenURL(_:) που επιστρέφει true εάν υπάρχει καταχωρημένο σχήμα. Στο Android ο έλεγχος γίνεται μέσω PackageManager.queryIntentActivities(). Και οι δύο πλατφόρμες απαιτούν προηγούμενο καθορισμό του σχήματος στη διαμόρφωση.

Μπορούν να μεταφερθούν κωδικοί πρόσβασης μέσω URL Scheme;

Όχι, το URL Scheme δεν κρυπτογραφεί δεδομένα. Οποιαδήποτε εφαρμογή έχει καταχωρήσει το ίδιο σχήμα μπορεί να υποκλέψει τον σύνδεσμο. Για ασφάλεια, χρησιμοποιήστε Universal Links με HTTPS ή κρυπτογράφηση δεδομένων σε επίπεδο πρωτοκόλλου.

Σύνοψη

  • URL Scheme — προσαρμοσμένο πρωτόκολλο URI για αλληλεπίδραση μεταξύ εφαρμογών σε πλατφόρμες κινητού σύμφωνα με το πρότυπο RFC 3986.
  • Καταχώρηση του σχήματος γίνεται στο Info.plist για iOS και στο AndroidManifest.xml για Android μέσω του μηχανισμού Intent Filter.
  • Επεξεργασία του εισερχόμενου συνδέσμου στο iOS γίνεται μέσω του εκπροσώπου εφαρμογής, στο Android — μέσω intent.getData() στην Activity-στόχο.
  • Παράμετροι μεταφέρονται μέσω query-string με κωδικοποίηση ποσοστού και περιορισμό μήκους έως 2 KB στο iOS.
  • Περιορισμός — το URL Scheme δεν λειτουργεί όταν λείπει η εφαρμογή; απαιτούνται Universal Links ή App Links για σωστό fallback.
  • Εναλλακτικές — Universal Links (iOS), App Links (Android) και οι εμπορικές πλατφόρμες Firebase Dynamic Links και Branch.io.
  • Ασφάλεια — το URL Scheme δεν κρυπτογραφεί δεδομένα, επομένως δεν είναι κατάλληλο για μεταφορά εμπιστευτικών πληροφοριών.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης