iOS12부터 UIWebView가 Deprecated가 되면서 WKWebView에 대해서 정리해 보았다. WKWebView의 가장 큰 단점은 쿠키를 직접 관리 해야한다는데에 있다.(그리고 현재 POST 방식의 load에 이슈가 있어서 사용이 불가능하다.) 대부분의 웹앱의 경우 API 통신하는 부분과 웹의 SESSID 쿠키를 맞춰서 작업해야 한다.SESSID가 틀리면 API 통신하는 네트워크 부분 혹은 웹에서 로그인 이슈 등이 생길 수 있다. 웹에서 자동으로 만들어지는 대부분의 쿠키는 한번 만들어지면 앱에서 수정할 수가 없다.그래서 웹이 로드되기 전에 원하는 미리 만들고 싶은 쿠키를 넣어놔서 다시 생성 안되게 해야한다.부득이 하게 웹에서 해당 쿠키가 변경되게 될 경우는 웹에서 messageHandler를 ..
iOS도 안드로이드 처럼 푸시 인증 키를 사용하면 1년에 한번씩 푸시 인증서 교체를 안해도 된다. 푸시 인증 키를 생성하는 방법은 아래와 같다. Keys에서 오른쪽 상단 +를 눌러 아래와 같이 작성한다. 다음 화면은 아래와 같다. 여기서 Confirm을 누르면 p8 파일을 다운로드 받는 화면이 나오고 여기서 밖에 다운로드가 안되니 주의하자. 인증 키로 푸시를 보내기 위해선 다운받은 p8파일, Key ID, Team ID가 필요하다. 아래 주소에서 확인 가능하다.Key ID - https://developer.apple.com/account/#/membership/Team ID - https://developer.apple.com/account/#/membership/ 이제 푸시를 보내기 위해서 아래와 같..
iOS10부터 이미지 푸시를 보낼 수 있다.iOS10에서는 앱 실행 중에도 앱내에서 처리 없이 상단 푸시를 볼 수 있다. (단, RemoteNotification 등록시 UNUserNotificationCenter를 사용하였을 경우) 우선 AppDelegate에서 푸시를 등록 해보자.let center = UNUserNotificationCenter.current()center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in print("granted = \(granted)")}center.delegate = self application.registerForRemoteNotifications() UNUserNot..
UITextFiled나 UITextView에서 입력 글자 제한을 해야되는 경우가 있다. UITextFieldDelegate의 shouldChangeCharactersIn 메서드를 이용해서 아래와 같이 사용하는게 보통의 경우이다.기존 textField의 텍스트와 새로 입력 받은 string을 합쳐서 길이를 제한하는 코드이다. func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { guard let text = textField.text as NSString? else {return false} let newString = text.repl..
개발하다 보면 뷰컨트롤러가 아닌 AppDelegate나 NSObject 클래스에서 UIAlertController를 띄우고 싶을때가 종종 있다. UIAlertController를 사용할려면 뷰컨트롤러에서 present를 해야하고 최상위가 아닌 뷰컨트롤러에서 시도할 경우 아래와 같이 계층 에러가 발생한다.(참고: viewDidLoad에서 바로 다른 뷰컨트롤러를 present를 하게 될 경우도 발생한다. 화면이 다 보여지지 않은 상태에서 다른 뷰컨트롤러를 보여준다는게 말이 안되기 때문이다.) Warning: Attempt to present on whose view is not in the window hierarchy! 그래서 아래와 같이 최상위 뷰컨트롤러를 구하는 클래스 함수를 만들어서 사용하고 있다. ..
iOS 10.3 부터 앱 아이콘 변경이 가능하다. UIApplication에서 제공하는 setAlternateIconName 를 이용하면 된다. @available(iOS 10.3, *) open func setAlternateIconName(_ alternateIconName: String?, completionHandler: ((Error?) -> Swift.Void)? = nil) Assets를 이용해 보려고 했지만 제대로 동작이 되지 않아 png파일을 직접 추가해서 구현했다. Info.plist에 아래 처럼 추가를 한다. Source Code로 확인하면 아래와 같다. CFBundleIcons CFBundleAlternateIcons Icon1 CFBundleIconFiles icon1 Icon2 ..
- Total
- Today
- Yesterday
- 앱 아이콘
- Notification Service Extension
- 이미지 푸시
- iOS Keys
- presentedViewController
- UIApplication
- Create a New Key
- UITextFieldTextDidChange
- Easy APNs Provider
- apns
- 인증 키
- httpCookieStore
- swift
- UNUserNotificationCenterDelegate
- ios
- 리치 푸시
- mutable-content
- NotificationCenter
- AppIcon
- wkwebview
- shouldChangeCharactersIn
- UITextFieldDelegate
- UNUserNotificationCenter
- appDelegate
- setAlternateIconName
- WebSiteDataStore
- iOS10
- whose view is not in the window hierarchy
- swift3
- UITextFiled
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |