2016-06-23 10 views
2

iOSアプリ開発の新機能です。現在、私はアプリとウェブページの間の相互作用を必要とするプロジェクトに取り組んでいます。私は、アプリ内のWebページをロードするためにSafari View Controllerを使用し、Webページの右上隅にある完了ボタンを使用してアプリに戻ることができることは分かっています。しかし、私はボタンの代わりにウェブページのリンクをクリックして、アプリに戻ってみたいです。私はこれのための解決策を見つけることができませんでした。誰も助けることができますか?事前に多くの感謝。Safariビューコントローラー

答えて

3

とインナー使用する必要があります。まず、あなたのInfo.plistにスキームを追加します。今すぐ

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLName</key> 
     <string>com.mydomain.MyCallback</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>mydomainwebcallback</string> 
     </array> 
    </dict> 
</array> 

、あなたがクリックされた任意のURLからあなたのアプリを開きますメカニズムを持っています。

<a href="mydomainwebcallback://whateverinfo">Return to app</a> 

私はここに簡素化するつもりですが、あなたはへの参照が必要になります。この場合、URLは次のようにURLを追加し、あなたのビューコントローラにロードされたウェブページに今すぐmydomainwebcallback://whatever

だろうAppDelegateSFSafariViewControllerまずAppDelegateで:

import UIKit 
import SafariServices 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 

    var window: UIWindow? 
    var safariVC: SFSafariViewController? 

    func application(application: UIApplication, handleOpenURL url: NSURL) -> Bool { 

     // Here we dismiss the SFSafariViewController 
     if let sf = safariVC 
     { 
      sf.dismissViewControllerAnimated(true, completion: nil) 
     } 

     return true 
    } 

あなたは私が代理人にSFSafariViewControllerを保管しております見ることができるように。今、私はVCを示し、私のビューコントローラに:あなたは、リンクを打ったとき

import UIKit 
import SafariServices 

class ViewController: UIViewController { 

    @IBAction func showSafariVC(sender: UIButton) { 

     if let url = NSURL(string: "https://mywebserver/callback.html") 
     { 
      let delegate = UIApplication.sharedApplication().delegate as! AppDelegate 
      delegate.safariVC = SFSafariViewController(URL: url) 
      presentViewController(delegate.safariVC!, animated: true, completion: nil) 
     } 
    } 
} 

、それはSFSafariViewControllerを閉じます。

+0

ありがとうございます。これはすべての詳細を提供します。わたしにはできる。ありがとう。 –

+0

@ShalinaHuあなたのために働く場合、答えを受け入れてください。 –

関連する問題