2016-11-17 8 views
0

私はSwift 3 and Xcode 8 (iOS 10.1)と一緒に働いています。私は全く新しい世界です。 :)UIApplication.sharedApplication.open()はURLを読み込みません

私はアクセストークンを取得するために外部アプリに対して認証しています。ユースケースは、次のとおりです。

1)私のアプリ

2から外部アプリをロード)、ユーザーを検証し、

3アクセストークンを取得する)、外部アプリから私のアプリに

をバックリダイレクトI 1)と2)はできるが、3)はできない。外部アプリケーションは、リダイレクトパラメータを設定するように指定しています。しかし、悲しいかな、葉巻はありません。

両方のアプリでURLスキームをInfo.plistに設定しました。私はコンソールやデバッガでエラーが発生しません。

私は過去4日間、グーグルで研究してきましたが、これは私が今までに思いついた解決策です。今、コンソールメッセージが表示されますが、外部アプリは開かなくなりました。

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: [:]) 
    } 
} 

私はどのような方法であなたの助けを本当に感謝します。

+0

あなたが述べたようにはい、私は、持っているAnbu.Karthik @あなたのplist –

+0

でURLスキーマ 'extapp'を追加します私の質問で。 – Mina

+0

ブロックすれば入りますか?、ブレークポイントを入れて一度チェックしてください。 –

答えて

1

あなたのInfo.plistファイルにカスタムスキームを追加してください。パラメータが適切にエンコードされていないことに気付かなかった。 AllowedCharactersでのデフォルトのフィルタは、/と:をエンコードしていません。これはAppleにとって既知の問題です。これは、エンコーディングの問題を解決して、今度は、私はextappを開いて持っていた問題:

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

チェックこのアウトしても、問題は、私はredirectパラメータをエンコードするために使用していたaddingPercentEncoding方法とされているように見えますHow to handle custom url schemes in swift (XCode 8)?

+0

答えてくれてありがとう、Ahmed。 AppDelegateの私のメソッドシグネチャは、あなたが提供したリンクに指定されているものです。 – Mina

関連する問題