2016-11-17 1 views
0

Ich arbeite mit Swift 3 and Xcode 8 (iOS 10.1), ich bin komplett neu auf der ganzen Welt. :)UIApplication.sharedApplication.open() lädt keine URL

Ich authentifiziere mich gegen eine externe App, um ein Zugriffs-Token zu erhalten. Der Anwendungsfall ist:

1) Laden externen App von meinem App

2), um den Benutzer zu Validieren und das Zugriffstoken

3) Redirect zurück zu meiner App von externem App

ich Ich kann 1) und 2), aber nicht 3). Die externe App hat angegeben, dass Sie einen Redirect-Parameter konfigurieren, und das habe ich getan. Aber leider keine Zigarre.

Ich habe URL-Schemas in Info.plist für beide Apps eingerichtet. Ich bekomme keine Fehler in der Konsole oder im Debugger.

Ich habe seit den letzten 4 Tagen geforscht und geforscht und das ist die Lösung, die ich bis jetzt gefunden habe. Im Moment sehe ich die Konsolenmeldungen, aber die externe App öffnet sich nicht mehr.

AppDelegate

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool { 
    if (url.scheme == "extapp") { 
     print("working with extapp scheme") 
    } else if (url.scheme == "myapp") { 
     print("redirecting back to app after working with extapp") 
    } 
    return true 
    } 

Viewcontroller

@IBAction func loginButton(_ sender: Any) { 
    let id = text.text 
    let currentCharacterCount = id.text?.characters.count ?? 0 
    if currentCharacterCount == 0 { 
     self.showAlert(text: "Please provide a id.") 
    } else if currentCharacterCount < 10 { 
     self.showAlert(text: "Oh! id doesn't seem to be in the correct format. Try again.") 
    } else { 
     if (self.firebaseData.callAuth(loggedIn: id!)) { 
      OpenExtApp() 
     } 
    } 
} 

func OpenExtApp() { 
    let Url = URL(string: "extapp:///?autostart=\(token)&redirect=myapp://key") 
    if (UIApplication.shared.canOpenURL(Url!)) { 
     UIApplication.shared.open(Url!, options: [:]) 
    } 
} 

würde ich schätze Ihre Hilfe in irgendeiner Weise wirklich.

+0

sind Sie die URL-Schema 'extapp' in Ihrem plist –

+0

@ Anbu.Karthik hinzugefügt Ja, ich habe, wie bereits erwähnt in meiner Frage. – Mina

+0

Geht es nach innen, wenn Block?, Bringe Punkt und überprüfe einmal. –

Antwort

1

Das Problem scheint hinzuzufügen. Ich habe nicht bemerkt, dass der Parameter nicht richtig codiert wurde. Es stellt sich heraus, dass der Standardfilter mit AllowedCharacters nicht codiert und/und:. Es ist ein bekanntes Problem mit Apple. Dies löste das Problem Codierung und wiederum das Problem, das ich mit dem Öffnen des extapp wurde mit:

let characterSetTobeAllowed = (CharacterSet(charactersIn: "!*'();:@&=+$,/?%#[] ").inverted) 
let redirect = parameter.addingPercentEncoding(withAllowedCharacters: characterSetTobeAllowed) 
0

Check this out und auch mit der addingPercentEncoding Methode gewesen zu sein war ich mit kodieren, die redirect Parameter stellen Sie sicher, die benutzerdefinierten Schemata zu Ihrer Datei info.plist How to handle custom url schemes in swift (XCode 8)?

+0

danke für deine antwort, Ahmed. Die Methodensignatur in AppDelegate entspricht der Angabe in dem von Ihnen angegebenen Link. – Mina