본문 바로가기
IT 실무/모바일 프로그래밍

[iOS] Swift에서 웹뷰로 모바일웹 띄우기(하이브리드앱 기본)

by 지식id 2017. 5. 14.
반응형
class ViewController: UIViewController, WKScriptMessageHandler, WKUIDelegate {
var webView: WKWebView?;
var host = "모바일웹주소(http://m.naver.com/)";

override func viewDidLoad() {
        super.viewDidLoad()
        // 화면이 load되면 webview를 initialize한다.
        webView = initJavascriptBridge();
        self.webView!.uiDelegate = self
 }

func initJavascriptBridge()->WKWebView{
        let contentController = WKUserContentController();
        // 웹에서 불러쓸수 있는 native함수를 정의한다.
        contentController.add(
            self,
            name: "ios"
        );
        
        let config = WKWebViewConfiguration();
        config.userContentController = contentController;
        let webView:WKWebView = WKWebView(frame:self.view.frame, configuration:config);
        let url = NSURL(string:host);
        let request = NSURLRequest(url:url! as URL);
        
        webView.load(request as URLRequest);
        self.view.addSubview(webView);
        
        return webView;
 }

// 웹뷰에서 alert나 confirm을 사용할 수 있게 해 주는 impleament
func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
        print("alert called");
        
        let alertController = UIAlertController(title: nil, message: message, preferredStyle: .actionSheet)
        
        alertController.addAction(UIAlertAction(title: "Ok", style: .default, handler: { (action) in
            completionHandler()
        }))
        
        self.present(alertController, animated: true, completion: nil)
}



하이브리드앱을 만드는 가장 기본 골격 소스이다.

잘 만들어진 모바일웹만 있다면 위 소스만으로 앱이 하나 만들어지게 된다. (다만 단순 웹으로 이루어진 앱은 심사 시 reject가 나게 되니 native적인 요소를 좀 추가 해 줘야 한다.)


반응형

댓글