어느날 Xcode로 토이프로젝트를 진행하다 이제 깃허브에 올려야겠다싶어
터미널 단축키를 찾아봤는데 눈을 씻고 찾아도 없더라..
그런데 알고보니 Xcode엔 그냥 터미널을 지원 안한단다.
그런데 최대한 구글링을 해보니 흡사한 방법이 있어 적어본다.

결론은.. 윈도우 .bat 파일처럼 명령어를 사전에 적어놓고 실행하게끔 하면 된다.

 

1. 사전 명령어를 실행할 스크립트 파일 만들기

touch open_terminal.sh

 

2. 해당 파일접근

vi open_terminal.sh

 

Insert 키누르고, 아래스크립트 작성후에 :wq 작성후 엔터

#!/bin/zsh
open -a Terminal `pwd`

 

위의 #!/bin/zsh 부분은 bash일경우 #!/bin/bash로 바꾸어주면 된다. 실행할 프로그램을 선언하는 것이다.

이제 스크립트 준비는 끝났다.
이제 Xcode로 접근하자.

 

1. Xcode -> Behaviors -> Edit behaviors 접근  

 

 

2. 커스텀 Behavior 작성

 

좌측하단의 + 기호를 누르고 하단의 Run 항목에 체크를 하고 전에 작성한 스크립트를 넣는다.
이때 명령어를 직접 쓰는게 아니라 파일업로드하듯이 파일을 찾아 넣어야 한다.

 

위와 같이하면 해당 프로젝트경로를 가진 터미널을 바로 실행한다.

XCode 로 팀 설정을 하다 오류가 생겼다.

내용을 보니, 번들 패키지명이 유니크하지 않고 이름이 겹칠 우려가 있으니

제대로 된 이름을 입력하라는 것이었다.

그래서 변경한다.

1. General 버튼 클릭, Bundle identifier 입력칸에 제대로 된 패키지명 입력

Xcode 내 General 화면, Bundle identifier 를 수정해주자

2. Signing & Capabilities 버튼 클럭, 서명완료된 것을 확인

Signing & Capabilities 화면, 서명이 완료된 것을 확인할 수 있다.

별 거 아닌 에러지만 처음보면 당황할 수 있다.

당황하지 않고 에러 내용을 잘 확인해보자!

지난 포스팅에

IOS 환경에서 웹뷰를 구현했는 데 문제는 웹뷰에 연결하는 시간이 오래 걸려

사용자가 텅 빈 화면을 볼 수 있다는 게 문제였다.

때문에 지난 포스팅에 이어 프로그레스바 옵션을 추가하겠다.

import WebKit
import UIKit

class ViewController: UIViewController, WKUIDelegate,WKNavigationDelegate {
    
    var webView : WKWebView!
    var progressView: UIProgressView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
            let site = "http://도메인주소.kr"
            let url = URL(string: site)
            let request = URLRequest(url: url!)
            webView = WKWebView(frame: self.view.frame)
            webView.navigationDelegate = self
            webView.uiDelegate = self
            webView.load(request)
            self.view.addSubview(webView)
           // 여기서부터 프로그레스바
            progressView = UIProgressView(progressViewStyle: .default) 
            progressView.sizeToFit()
            progressView.frame = CGRect(x: 0, y: 64, width: self.view.bounds.size.width, height: 20)
            self.view.addSubview(progressView)
            self.webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress), options: .new, context: nil)
    }
    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "estimatedProgress" {
             progressView.progress = Float(webView.estimatedProgress)
             print(Float(webView.estimatedProgress))
            if Float(webView.estimatedProgress) == 1.0 { // 로딩이 다되면
                progressView.progress = 0 // 0 으로 초기화
            }
        }
     }
}

 

스타일 관련해서 디테일 한 부분은 공식문서 참고해주시고,

프로그레스바가 100프로 만족되면 0으로 초기화 시키는 로직을 추가하였다.

 

 

 

끝!

IOS 에서 WebView 를 구현하는 방법은 두가지가 있다고 한다.

기본 WebView 와 WK WebView 가 있는 데

기본 WebView 는 매우 예전부터 쓰는 방식이고 성능도 그다지 좋지 않아

애플 개발자 센터에서도 권장하지 않아 요즘엔 WK WebView 를 쓴다고 한다.

이제 시작해보자.

* 프로젝트 생성은 다들 아실테니 생략~

1. View Controller 소스 수정

import WebKit
import UIKit

class ViewController: UIViewController, WKUIDelegate {
    
    var webView : WKWebView!
    
    override func loadView() {
          let webConfiguration = WKWebViewConfiguration()
          webView = WKWebView(frame: .zero, configuration: webConfiguration)
          webView.uiDelegate = self
          view = webView
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        let myURL = URL(string:"http://호출도메인.kr")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}

2. Info.plist 파일 수정 * http 사이트만 해당

나의 경우 http 사이트 였기 때문에 Info.plist 를 수정해야 한다.

1. App Transport Security Settings 추가 
2.위 1번 하위 속성-> Allow Arbitrary Loads
 

주의할 점은 하위 속성을 추가할 때 제목 앞부분의 화살표를 활성화 시키고 해야 된다는 점이다.

안 그러면 엉뚱한 곳에 생성된다.

3. Product -> Run 버튼 실행

잘 실행된다. 혹시 안되시는 분은 Xcode 의 개발자 서명이 안되있을 수 있으니

Xcode 로 개발하다가 빌드를 했더니 저런 에러가 나왔다.

알아보니 내가 Xcode로 첫개발을 하다보니 개발자 등록을 안해놔서 생긴 문제라고 한다.

안드로이드 스튜디오는 그런게 없었는데.. 애플은 조금 더 철저한 거 같다.

해결하는 방법을 차근차근 알아보자.

1 . Xcode 를 눌러서 Prefrences (환경설정) 버튼 클릭

2. Accounts 버튼 클릭 후 좌측 하단의 +버튼 클릭

3. Apple ID 클릭 후 우측 하단의 Continue 버튼 클릭

4. Apple ID 적고 NEXT 버튼 클릭

5. 우측 하단의 Manage Certificates(인증서 관리) 버튼 클릭

6. 좌측 하단의 + 버튼을 클릭하여 개발환경을 등록하고, 등록이 됐으면 Done 버튼을 클릭하여 설정을

마무리한다.

7. 최종적으로 프로젝트 아이콘을 눌러 Signing & Capabilities 버튼을 클릭 후 team 설정을 해준다.

끝.

 

+ Recent posts