๐ iOS/๊ฐ๋ฐ
-
[iOS] HTML String์ผ๋ก WKWebView ๋ก๋ํ๊ธฐ๐ iOS/๊ฐ๋ฐ 2023. 6. 14. 17:48
HTML String์ UILabel์ ์ ์ฉํ๋ ๋ฑ์ ๊ฐ๋จํ ์์ ์ String Extension์ ์ถ๊ฐํด์ ์๋์ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. extension String { var htmlToAttributedString: NSAttributedString? { guard let data = self.data(using: .utf8) else { return nil } do { return try NSAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html, .characterEncoding:String.Encoding.utf8.rawValue], documentAttributes: nil) } ..
-
[iOS] CocoaPods could not find compatible versions for pod ์๋ฌ ํด๊ฒฐ๐ iOS/๊ฐ๋ฐ 2023. 6. 12. 17:00
ํ๋ก์ ํธ๋ฅผ ํด๋ก ๋ฐ์ pod install์ ํด๋ณด๋ CocoaPods could not find compatible versions for pod 'Firebase' ์ค๋ฅ๊ฐ ๋ด์ต๋๋ค. ํด๋น ํ๋ก์ ํธ์ Podfile.lock ํ์ผ์ ๋ช ์๋ Firebase์ ๋ฒ์ ์ด 10.9.0์ธ๋ฐ, ์ ๋ฃจํธ๋๋ ํ ๋ฆฌ์ ์๋ Podspec ํ์ผ์ Firebase 10.9.0 ๋ฒ์ ์ด ์์ด์ ๋ํ๋๋ ์ค๋ฅ์ ๋๋ค. Podspec ํ์ผ https://guides.cocoapods.org/syntax/podspec.html Podspecํ์ผ์ด ๋ญ๊น์? Podspec ํ์ผ์๋ Pod ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ , ์์ค๋ฅผ ๊ฐ์ ธ์ฌ ์์น, ์ฌ์ฉํ ํ์ผ, ์ ์ฉํ ๋น๋ ์ค์ ๋ฐ ์ด๋ฆ, ๋ฒ์ ๋ฐ ์ค๋ช ๊ณผ ๊ฐ์ ๋ฉํ๋ฐ์ดํฐ์ ๋ํ ์ธ๋ถ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค. Pod ๋ผ..
-
[iOS] ์ฑ์คํ ์ด๋ก ๋งํฌ ์ฐ๊ฒฐํ๊ธฐ (apps, itunes, itms-apps, mt=8)๐ iOS/๊ฐ๋ฐ 2023. 6. 6. 12:04
์ฑ์คํ ์ด๋ฅผ ์ฌ๋ ๋งํฌ์ ์ข ๋ฅ์๋ ์ธ ๊ฐ์ง๊ฐ ์์ต๋๋ค. itunes.apple.com/app/id1644992356 apps.apple.com/app/id1644992356 itms-apps://apps.apple.com/app/id1644992356 ์ธ ๋งํฌ์ ๋์์ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค. apps.apple.com/app/id1644992356 ์ฑ์คํ ์ด์ ์นํ์ด์ง๋ฅผ ์ฝ๋๋ค. let urlStr = "https://apps.apple.com/app/id1644992356" if #available(iOS 10.0, *) { UIApplication.shared.open(URL(string: urlStr)!, options: [:], completionHandler: nil) } else { UIApplicat..
-
[iOS] WKWebView Content Size ๋ชจ๋ฐ์ผ์ ๋ง์ถ๊ธฐ๐ iOS/๊ฐ๋ฐ 2023. 6. 4. 18:57
์น๋ทฐ์์ ํน์ ์นํ์ด์ง๋ฅผ ๋ก๋ํ ๋, ํด๋น ํ์ด์ง๊ฐ ์ผ์ชฝ์ฒ๋ผ ๋ชจ๋ฐ์ผ์ ์นํ์ ์ด์ง ์์์ ์ปจํ ์ธ ์ ์ฌ์ด์ฆ๊ฐ PC๋ฒ์ ์ ๋ณด๋ ๊ฒ์ฒ๋ผ ๋ก๋๋ ๋๊ฐ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ meta ํ๊ทธ๋ฅผ ์๋์ ๊ฐ์ด ์์ ํด์ฃผ๋ฉด ์ค๋ฅธ์ชฝ์ฒ๋ผ ๋ง๋ค์ด์ฃผ์ด ํด๊ฒฐํ ์ ์๋๋ฐ, ์นํ์ด์ง์ ์ฝ๋๋ฅผ ์ง์ ์์ ํ ์ ์๋ ์ํฉ์ผ ๋๋ iOS ๋ค์ดํฐ๋ธ ์ฝ๋์์์ ํด๋น ํ๊ทธ๋ฅผ ์ฝ์ ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํด์ฃผ๋ฉด ๋ฉ๋๋ค. evaluateJavascript ํจ์๋ฅผ ํตํด ์ํ๋ ์์ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ํด๋น ํ๊ทธ๋ฅผ ์ฝ์ ํด์ฃผ๊ฑฐ๋ var scriptContent = "var meta = document.createElement('meta');" scriptContent += "meta.name='viewport';" scriptContent += "m..
-
[iOS] SwiftGen์ผ๋ก ๋ฆฌ์์ค ๊ด๋ฆฌํ๊ธฐ๐ iOS/๊ฐ๋ฐ 2023. 6. 4. 13:03
SwiftGen์ CocoaPods, Homebrew, Mint ๋ฑ ๋ค์ํ ๋ฐฉ๋ฒ์ ํตํด ์ค์นํ ์ ์๋๋ฐ, ๋ณธ ๊ธ์์๋ Homebrew๋ก ์ค์นํด๋ณด๊ฒ ์ต๋๋ค. ํฐ๋ฏธ๋์์ ์๋ ๋ช ๋ น์ด๋ฅผ ์์ฐจ์ ์ผ๋ก ์คํํฉ๋๋ค. brew update brew install swiftgen ์ค์น๋ฅผ ์๋ฃํ๊ณ ๋๋ฉด ๋ฆฌ์์ค๋ค์ ์ฝ๋๋ก ํ์ฑํด์ค ์ ์๋ yml ํ์ผ์ด ํ์ํ๋ฐ, yml ํ์ผ์ ํฐ๋ฏธ๋์์ swiftgen config init ์ ์ ๋ ฅํด ์์ฑํ ์ ์์ต๋๋ค. ๋๋ Xcode์์๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํด yml ํ์ผ์ ์์ฑํ ์๋ ์๋๋ฐ, ์ฐ์ ํ๋ก์ ํธ ํ์ผ - Targets - Build Phases - [+] New Run Script Phase๋ก ์คํฌ๋ฆฝํธ ์น์ ์ ์ถ๊ฐํฉ๋๋ค. ํฐ๋ฏธ๋์์ ์ ๋ ฅํ๋ ๋ช ๋ น์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก swiftge..
-
[iOS] WKWebView User Agent ์ค์ (์น๋ทฐ์ ์น๋ธ๋ผ์ฐ์ ๊ตฌ๋ถํ๊ธฐ)๐ iOS/๊ฐ๋ฐ 2023. 5. 30. 17:44
์ฑ ์ ์์ ๋ํด์๋ง ๊ตฌํํ๊ณ ์ถ์ ๊ธฐ๋ฅ์ด ์์ ๋, ์น๋ธ๋ผ์ฐ์ ๋ก ์ ์ํ๋ ๊ฒ์ ๋ง๊ณ ์ถ์ ๋, … ๋ฑ๋ฑ ์น๋ทฐ๋ก ์ ์ํ๋์ง ์น๋ธ๋ผ์ฐ์ ๋ก ์ ์ํ๋์ง ๊ตฌ๋ถ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด ๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด User Agent ๊ฐ์ ๋๋ค. ์ฐ์ ์น๋ทฐ์ ์น๋ธ๋ผ์ฐ์ ๊ฐ๊ฐ์ User Agent ๊ธฐ๋ณธ๊ฐ์ ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค. ๐ ์น๋ทฐ // Swift self.webView.evaluateJavaScript("navigator.userAgent") { (result, error) in let defaultUserAgent: String = result as! String print("defaultUserAgent : \(defaultUserAgent)") } ๐ ์น๋ธ๋ผ์ฐ์ // JavaScript alert(naviga..
-
[iOS] WKWebView ์น๋ทฐ๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์ ์ค๋ ๋๋ฉด ํฐ ํ๋ฉด๋ง ๋ณด์ด๋ ๋ฐฑํํ์ ํด๊ฒฐ (webViewWebContentProcessDidTerminate)๐ iOS/๊ฐ๋ฐ 2023. 5. 4. 15:04
์น๋ทฐํ๋ฉด์ ์ฌ์ฉํ๋ค๊ฐ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ๋ด๋ ค๋ ์ฑ ๋ค๋ฅธ ์ฑ๋ค์ ์ฌ์ฉํ ํ ๋ค์ ์น๋ทฐํ๋ฉด์ด ๋์์ ธ์๋ ์ฑ์ ์คํํ๋ฉด ๊ฐํน ์น๋ทฐ์์ญ์ด ํ์๊ฒ ๋ณํ ์ฑ ์๋ฌด๋ฐ ์ปจํ ์ธ ๋ ๋ณด์ด์ง ์๋ ํ์์ด ๋ฐ์ํ ๋๊ฐ ์์ต๋๋ค. ์๋ ๊ฒ์..๐คฆโ๏ธ ๐ ์์ธ iOS์ WKWebView๋ ์น๋ทฐ๊ฐ ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ํฌ๋์๊ฐ ์ผ์ด๋ ์น๋ทฐ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃ์์ผ๋ฒ๋ฆฝ๋๋ค. ์ด ๋ ์น๋ทฐ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด์ ๋น ํ์์ ํ๋ฉด๋ง์ด ๋จ๊ฒ ๋๋ ๊ฒ์ ๋๋ค. (UIWebview๋ ํฌ๋์๊ฐ ๋๋ฉด ์ฑ์ ์ข ๋ฃ์์ผ๋ฒ๋ ธ๋๋ฐ, WKWebView๋ ํฌ๋์๊ฐ ๋๋ฉด ์น๋ทฐ๋ง ์ข ๋ฃ๋๋ค๊ณ ํฉ๋๋ค.) ๐ ์ฌํ๋ฐฉ๋ฒ ์น๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ ๋ฐฑ๊ทธ๋ผ์ด๋์ ๋ด๋ ค ๋๊ณ , ๊ธฐ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ๋์ด๊ธฐ ์ํด ๋ค๋ฅธ ์ฑ๋ค์ 10~20๊ฐ ์ ๋ ์คํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ ๋ฐฑ๊ทธ๋ผ์ด๋์..
-
[iOS] Podfile.lock ํ์ผ๊ณผ ๋ฒ์ ๊ด๋ฆฌ์ ๋ํ ๊ณ ์ฐฐ๐ iOS/๊ฐ๋ฐ 2023. 2. 12. 20:16
Podfile.lock pod install ๋ช ๋ น์ด๋ฅผ ์ฒ์ ์คํํ๋ฉด podfile์ ๋ช ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋๊ณ Podfile.lock ํ์ผ์ด ๋ง๋ค์ด์ง๋ฉด์ Podfile.lock์ ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ์ด ๊ธฐ๋ก๋ฉ๋๋ค. Podfile.lock์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ๋งก๊ณ ์๋ ์ ์ ๋๋ค. PODS ์ค์น๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฒ์ , ์์กด์ฑ(Dependency)์ด ๊ธฐ๋ก๋์ด ์์ต๋๋ค. Tabman์ ์๋ก ๋ค๋ฉด, ์๋ซ์ค์ ํ ์นธ์ด ๋ค์ฌ์ฐ๊ธฐ๋๋ฉด์ Pageboy๊ฐ ์ ํ์์ต๋๋ค. Tabman์ด Pageboy์ ์์กด์ฑ์ ๊ฐ๊ณ ์๊ธฐ ๋๋ฌธ์ Tabman์ ์ค์นํจ์ผ๋ก์จ Pageboy๋ ํจ๊ป ์ค์น๋์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. PODFILE CHECKSUM Podfile.lock์ ์ ์ผ์ฑ์ ๋ณด์ฅํด์ฃผ๋ ๊ฐ์ ๋๋ค. ๋ง์ฝ ๋ฒ์ ์ด ๋ณ๊ฒฝ๋๋ฉด CHEC..