私はopenUrlを介してお互いに通信する2つのアプリケーションがあります。 2番目のアプリを開く前にカップルのことを確認できるようにしたい。オーバーライドcanOpenUrl(_ :) AppDelegate
つまり、App1はApp2を起動します。そのため、App2は指定されたURLを開くことができるかどうかを確認します。可能であれば、打ち上げを続行してください。できない場合は、起動を停止し、App1でエラーを表示します。
iOSにはすでにこの機能が搭載されているようですが、動作させる方法を理解できません。
これはApp1からのコードの例です。App2です。
let url = URL(string: "APP2://Screen1")
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: { _ in })
} else {
self.showError("Couldn't Open App2")
}
これは、URLを受け入れるようにしようとApp2ののコード例です。
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
guard options[.sourceApplication] as? String == "com.test.app1" else { return false }
if self.canLogInFrom(url) {
return true
else {
return false
}
私がfalseを返すと、とにかく起動されます。私がこの関数で何を返すのかは関係なく、App2を起動します。
AppDelegate CanOpenURL関数を実装できる方法はありますか?
返されたブールは 'application(_:open:options:)'メソッドで実際に何をしますか?あたかも無視されているようです。 – SeanRobinson159
これはOSによって何らかの形で使用されるかもしれませんが、結果はApp1に返されません。 – rmaddy
申し訳ありませんが、私は技術的に** App2 **を起動したアプリがわからないので、** App2 **を開くことができなかった場合、以前のアプリに実際に戻ることはできませんでした。 – SeanRobinson159