Εκκίνηση μιας εφαρμογής μέσα από ένα άλλο (iPhone)

ψήφοι
145

Είναι δυνατόν να ξεκινήσει οποιαδήποτε αυθαίρετη εφαρμογή iPhone μέσα από μια άλλη εφαρμογή ?, Για παράδειγμα, στην αίτησή μου αν θέλω ο χρήστης να πατήσει ένα κουμπί και να ξεκινήσει απευθείας στην εφαρμογή τηλεφώνου (κλείσετε την τρέχουσα εφαρμογή, ανοίξτε την εφαρμογή τηλεφώνου) .

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

Δημοσιεύθηκε 07/01/2009 στις 04:41
πηγή χρήστη
Σε άλλες γλώσσες...                            


14 απαντήσεις

ψήφοι
73

Όπως Kevin επισημαίνει, Σχέδια διεύθυνση URL είναι ο μόνος τρόπος για να επικοινωνούν μεταξύ των εφαρμογών. Έτσι, όχι, δεν είναι δυνατό να ξεκινήσει αυθαίρετες εφαρμογές.

Αλλά, είναι δυνατόν να ξεκινήσει οποιαδήποτε εφαρμογή που καταγράφει ένα Σχέδιο URL, είτε της Apple, η δική σας, ή κάποιο άλλο προγραμματιστή. Οι γιατροί εδώ:

Η επικοινωνία με άλλες εφαρμογές

Όσο για την έναρξη του τηλεφώνου, μοιάζει με το tel:σύνδεσμο πρέπει να έχει τουλάχιστον τρία ψηφία πριν το τηλέφωνο θα ξεκινήσει. Έτσι, μπορείτε όχι μόνο να πέσει στην εφαρμογή w / o κλήση ενός αριθμού.

Απαντήθηκε 07/01/2009 στις 06:35
πηγή χρήστη

ψήφοι
66

Βρήκα ότι είναι εύκολο να γράψει μια εφαρμογή που μπορεί να ανοίξει μια άλλη εφαρμογή.

Ας υποθέσουμε ότι έχουμε δύο εφαρμογές που ονομάζεται FirstAppκαι SecondApp. Όταν ανοίξει το FirstApp, θέλουμε να είμαστε σε θέση να ανοίξει το SecondApp με το πάτημα ενός κουμπιού. Η λύση για να γίνει αυτό είναι:

  1. Σε SecondApp

    Πηγαίνετε στο αρχείο plist της SecondApp και θα πρέπει να προσθέσετε ένα URL Σχέδια με μια σειρά iOSDevTips (φυσικά μπορείτε να γράψετε ένα άλλο string.it για εσάς).

εισάγετε περιγραφή της εικόνας εδώ

2. Σε FirstApp

Δημιουργήστε ένα κουμπί με την παρακάτω ενέργειες:

- (void)buttonPressed:(UIButton *)button
{
  NSString *customURL = @"iOSDevTips://";

  if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:customURL]])
  {
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];
  }
  else
  {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error"
                              message:[NSString stringWithFormat:@"No custom URL defined for %@", customURL]
                              delegate:self cancelButtonTitle:@"Ok" 
                              otherButtonTitles:nil];
    [alert show];
  }

}

Αυτό είναι. Τώρα, όταν μπορείτε να κάνετε κλικ στο κουμπί στο FirstApp θα πρέπει να ανοίξει το SecondApp.

Απαντήθηκε 04/06/2014 στις 10:31
πηγή χρήστη

ψήφοι
16

Η lee απάντηση είναι απολύτως σωστό για iOS πριν από 8.

Στο iOS 9 πρέπει να λευκή λίστα όλα τα συστήματα URL App σας θέλει να αναζητούν στο info.plist κάτω από το κλειδί LSApplicationQueriesSchemes (μια σειρά από strings):

εισάγετε περιγραφή της εικόνας εδώ

Απαντήθηκε 17/11/2015 στις 17:35
πηγή χρήστη

ψήφοι
11

Σε Swift

Απλά incase κάποιος έψαχνε για μια γρήγορη Swift αντιγραφή και επικόλληση

if let url = NSURL(string: "app://") where UIApplication.sharedApplication().canOpenURL(url) {
            UIApplication.sharedApplication().openURL(url)
} else if let itunesUrl = NSURL(string: "https://itunes.apple.com/itunes-link-to-app") where UIApplication.sharedApplication().canOpenURL(itunesUrl) {
            UIApplication.sharedApplication().openURL(itunesUrl)      
}
Απαντήθηκε 19/01/2016 στις 13:30
πηγή χρήστη

ψήφοι
10

Εδώ είναι ένα καλό φροντιστήριο για την έναρξη εφαρμογής μέσα από μια άλλη εφαρμογή:
iOS SDK: Συνεργασία με Σχέδια URL
Και, δεν είναι δυνατό να ξεκινήσει αυθαίρετη εφαρμογή, αλλά οι εγγενείς εφαρμογές που είναι νηολογημένα τα Σχέδια URL .

Απαντήθηκε 26/12/2011 στις 12:04
πηγή χρήστη

ψήφοι
7

Για να σας αφήσει να ανοίξετε την αίτησή σας από την άλλη, θα χρειαστεί να κάνετε αλλαγές και στις δύο εφαρμογές. Εδώ είναι τα βήματα που χρησιμοποιούν Swift 3 με iOS 10 ενημέρωση:

1. Καταχωρήστε την αίτησή σας που θέλετε να ανοίξετε

Ενημερώστε το Info.plistκαθορίζοντας έθιμο και μοναδική διεύθυνση URL Σχέδιο της εφαρμογής σας.

εισάγετε περιγραφή της εικόνας εδώ

Σημειώστε ότι το όνομα του συστήματος σας πρέπει να είναι μοναδικό, αλλιώς αν έχετε κάποια άλλη εφαρμογή με το ίδιο όνομα σχήμα URL εγκατασταθεί στη συσκευή σας, τότε αυτό θα καθοριστεί runtime οποία το ένα παίρνει άνοιξε.

2. Συμπεριλάβετε το προηγούμενο καθεστώς διεύθυνση URL στο κύριο της αίτησής σας

Θα πρέπει να διευκρινίζουν τον μηχανισμό URL που θέλετε η εφαρμογή να είναι σε θέση να χρησιμοποιούν με τη canOpenURL:μέθοδο της UIApplicationκατηγορίας. Έτσι ανοίξετε το κύριο εφαρμογής Info.plistκαι να προσθέσει σύστημα URL του άλλου εφαρμογής για να LSApplicationQueriesSchemes. (Δημιουργήθηκαν το iOS 9.0)

εισάγετε περιγραφή της εικόνας εδώ

3. Εφαρμογή της δράσης που ανοίγει την εφαρμογή σας

Τώρα, όλα είναι έτοιμα, έτσι είστε καλοί να γράψουν κώδικα σας στην κύρια αίτησή σας που ανοίγει άλλη εφαρμογή σας. Αυτό θα πρέπει να μοιάζει κάπως έτσι:

let appURLScheme = "MyAppToOpen://"

guard let appURL = URL(string: appURLScheme) else {
    return
}

if UIApplication.shared.canOpenURL(appURL) {

    if #available(iOS 10.0, *) {
        UIApplication.shared.open(appURL)
    }
    else {
        UIApplication.shared.openURL(appURL)
    }
}
else {
    // Here you can handle the case when your other application cannot be opened for any reason.
}

Σημειώστε ότι αυτές οι αλλαγές απαιτεί μια νέα έκδοση, αν θέλετε υπάρχουσα εφαρμογή σας (εγκατεστημένο από το AppStore) για να ανοίξει. Αν θέλετε να ανοίξετε μια εφαρμογή που έχετε ήδη κυκλοφορήσει στην Apple AppStore, τότε θα πρέπει να ανεβάσετε μια νέα έκδοση πρώτη που περιλαμβάνει την εγγραφή καθεστώς URL σας.

Απαντήθηκε 25/05/2017 στις 08:07
πηγή χρήστη

ψήφοι
7

Μπορείτε να ξεκινήσει μόνο εφαρμογές που έχουν καταθέσει το σύστημα διεύθυνσης URL. Στη συνέχεια, όπως ακριβώς θα ανοίξετε την εφαρμογή SMS μέσω sms :, θα είστε σε θέση να ανοίξετε την εφαρμογή με τη χρήση συστήματος URL τους.

Υπάρχει ένα πολύ καλό παράδειγμα διατίθεται στα έγγραφα που ονομάζεται LaunchMe που αποδεικνύει αυτό.

LaunchMe δείγμα κώδικα από 6 Νοεμβρίου του 2017.

Απαντήθηκε 07/01/2009 στις 12:43
πηγή χρήστη

ψήφοι
6

Δοκιμάστε την παρακάτω κωδικό θα σας βοηθήσει να ξεκινήσει μια εφαρμογή από την εφαρμογή σας

Σημείωση: Αντικαταστήστε το όνομα fantacy με το πραγματικό όνομα της εφαρμογής

NSString *mystr=[[NSString alloc] initWithFormat:@"fantacy://location?id=1"];
NSURL *myurl=[[NSURL alloc] initWithString:mystr];
[[UIApplication sharedApplication] openURL:myurl];
Απαντήθηκε 04/09/2014 στις 14:54
πηγή χρήστη

ψήφοι
5

Για να επιτευχθεί αυτό θα πρέπει να προσθέσετε μερικές γραμμή κώδικα, τόσο App

App A: Ποια θέλετε να ανοίξετε από μια άλλη εφαρμογή.

App Β : Από το App Β θέλετε να ανοίξετε App A

Κώδικας App A

Προσθέστε μερικές ετικέτες στο Plist του App A Open Plist Πηγή App Α και Παρελθόν παρακάτω XML

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.TestApp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>testApp.linking</string>
        </array>
    </dict>
</array>

Στο App εκπρόσωπος του App A - Πάρτε επανάκλησης εδώ

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
// You we get the call back here when App B will try to Open 
// sourceApplication will have the bundle ID of the App B
// [url query] will provide you the whole URL 
// [url query] with the help of this you can also pass the value from App B and get that value here 
}

Τώρα έρχονται στο App κωδικό B -

Αν απλά θέλετε να ανοίξετε App Α χωρίς καμία παράμετρο εισόδου

-(IBAction)openApp_A:(id)sender{

    if(![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"testApp.linking://?"]]){
         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"App is not available!" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [alert show];

        }
}

Αν θέλετε να περάσετε παραμέτρων από το App Β σε App Α , στη συνέχεια, χρησιμοποιήστε τον παρακάτω κώδικα

-(IBAction)openApp_A:(id)sender{
    if(![[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"testApp.linking://?userName=abe&registered=1&Password=123abc"]]){
         UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"App is not available!" message:nil delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [alert show];

        }
}

Σημείωση: Μπορείτε επίσης να ανοίξετε App με απλά πληκτρολογήστε testApp.linking: //; στον browser Safari

Απαντήθηκε 19/07/2017 στις 11:09
πηγή χρήστη

ψήφοι
3

Οχι δεν είναι. Εκτός από τις τεκμηριωμένες χειριστές URL, δεν υπάρχει κανένας τρόπος για να επικοινωνούν με το / ξεκινήσει άλλη εφαρμογή.

Απαντήθηκε 07/01/2009 στις 05:59
πηγή χρήστη

ψήφοι
2

Δοκίμασα και αυτό πριν από λίγο καιρό ( Launch iPhone Εφαρμογή με Identifier ), αλλά υπάρχει σίγουρα δεν είναι τεκμηριωμένο τρόπο για να γίνει αυτό. :)

Απαντήθηκε 26/12/2011 στις 23:03
πηγή χρήστη

ψήφοι
0

Μια δευτερεύουσα σημείωση σχετικά με αυτό το θέμα ...

Υπάρχει ένα όριο 50 αίτηση για πρωτόκολλα που δεν είναι εγγεγραμμένοι.

Σε αυτή τη συζήτηση μήλο αναφέρουμε ότι για μια συγκεκριμένη έκδοση μιας εφαρμογής μπορείτε να ελέγξετε μόνο τον canOpenUrlπεριορισμένο αριθμό των φορές και θα αποτύχει μετά από 50 κλήσεις για αδήλωτη συστήματα . Επίσης έχω δει ότι αν προστεθεί το πρωτόκολλο αφού έχετε εισάγει αυτό το αποτυχημένο κράτος θα εξακολουθεί να αποτύχει.

Να είστε ενήμεροι για αυτό, θα μπορούσε να είναι χρήσιμο σε κάποιον.

Απαντήθηκε 01/07/2019 στις 17:28
πηγή χρήστη

ψήφοι
0

Σε Swift 4.1 και Xcode 9.4.1

Έχω δύο εφαρμογές 1) PageViewControllerExample και 2) DelegateExample. Τώρα θέλω να ανοίξει DelegateExample εφαρμογή με PageViewControllerExample εφαρμογή. Όταν κάνω κλικ ανοικτό κουμπί PageViewControllerExample, DelegateExample εφαρμογή θα ανοίξει.

Γι 'αυτό πρέπει να κάνουμε κάποιες αλλαγές στο .plist αρχεία για τις δύο εφαρμογές.

Βήμα 1

Σε DelegateExample εφαρμογή αρχείο ανοιχτό .plist και προσθέστε Τύποι διεύθυνση URL και Σχέδια URL. Εδώ πρέπει να προσθέσουμε απαιτείται το όνομά μας, όπως «Η εφαρμογή μου».

εισάγετε περιγραφή της εικόνας εδώ

Βήμα 2

Σε PageViewControllerExample εφαρμογή αρχείο ανοιχτό .plist και να προσθέσετε αυτόν τον κώδικα

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>myapp</string>
</array>

Τώρα μπορούμε να ανοίξουμε DelegateExample εφαρμογή όταν κάνετε κλικ στο κουμπί στο PageViewControllerExample.

//In PageViewControllerExample create IBAction
@IBAction func openapp(_ sender: UIButton) {

    let customURL = URL(string: "myapp://")
    if UIApplication.shared.canOpenURL(customURL!) {

        //let systemVersion = UIDevice.current.systemVersion//Get OS version
        //if Double(systemVersion)! >= 10.0 {//10 or above versions
            //print(systemVersion)
            //UIApplication.shared.open(customURL!, options: [:], completionHandler: nil)
        //} else {
            //UIApplication.shared.openURL(customURL!)
        //}

        //OR

        if #available(iOS 10.0, *) {
            UIApplication.shared.open(customURL!, options: [:], completionHandler: nil)
        } else {
            UIApplication.shared.openURL(customURL!)
        }
    } else {
         //Print alert here
    }
}
Απαντήθηκε 19/07/2018 στις 08:04
πηγή χρήστη

ψήφοι
0

Swift 3 γρήγορη και επικόλληση έκδοση του @ villy393 απάντηση για:

if UIApplication.shared.canOpenURL(openURL) {
    UIApplication.shared.openURL(openURL)
} else if UIApplication.shared.canOpenURL(installUrl) 
    UIApplication.shared.openURL(installUrl)
}
Απαντήθηκε 03/05/2017 στις 12:34
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more