Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

lgvv98

[iOS14] โ™‹๏ธ SplashView๋ฅผ ํ™œ์šฉํ•ด Alert ๋ฐœ์ƒํ•˜๊ธฐ ๋ณธ๋ฌธ

โš ๏ธ deprecated โš ๏ธ/๐Ÿ˜ท ์ฝ”๋กœ๋‚˜19์•Œ๋ฆผ์•ฑ

[iOS14] โ™‹๏ธ SplashView๋ฅผ ํ™œ์šฉํ•ด Alert ๋ฐœ์ƒํ•˜๊ธฐ

๐Ÿฅ• ์บ๋Ÿฟ๋งจ 2021. 8. 2. 11:50

โœ…์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” SplashView๋ฅผ ์ด์šฉํ•˜์—ฌ Alert๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

 

์šฐ์„  ๋‚˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ์‹œ์ž‘ํ•  ๋•Œ, ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด error ์•Œ๋ฆผ๊ณผ ๋™์‹œ์— Alert๋ฅผ ๋ฐœ์ƒํ•˜์—ฌ ์•ฑ์˜ ์‹œ์ž‘์„ ์ค‘๋‹จ์‹œํ‚ค๋ ค ํ–ˆ๋‹ค.

splash ํ™”๋ฉด์—์„œ ๋ณด์—ฌ์ฃผ๋Š” ์•Œ๋Ÿฟ

 

์ฒ˜์Œ์— ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๊ธฐ๋ก  LaunchScreen.storyboard์ชฝ์— ์ปค์Šคํ…€ ํด๋ž˜์Šค๋ฅผ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜์˜€์œผ๋‚˜...

Launch Storyboard์— ์ปค์Šคํ…€ ํด๋ž˜์Šค ์—ฐ๊ฒฐ์‹œ์˜ ์—๋Ÿฌ

์ž.. ์ด๋Ÿฐ ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚œ๋‹ค. ์ฆ‰, ์ปค์Šคํ…€ ํด๋ž˜์Šค๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ง์ด๋‹ค.. ใ… ใ… 

๊ทธ๋Ÿฐ๋ฐ, ๋‹ค๋ฅธ ์•ฑ๋“ค์„ ๋ณด๋ฉด ๋„คํŠธ์›Œํฌ ์—๋Ÿฌ๋‚˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์‹œ, Alert๋ฅผ ํ‘œ์‹œํ•ด ์ฃผ๋˜๋ฐ ๊ทธ๊ฑด ์–ด๋–ป๊ฒŒ ํ•˜๋Š”๊ฑด์ง€ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒผ๋‹ค.

๊ทธ๋ž˜์„œ ์ฐพ์•„๋ณด๋˜ ์ค‘, SplashScreen์— ๋Œ€ํ•ด์„œ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ๋ฐฉ์‹์„ ์ ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์—ฌ ๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค.

 

(๋ชฉ์ฐจ)

1. SplashScreen๋Š” ์–ด๋–ค ๋กœ์ง์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์„๊นŒ?

2. SplashScreen์˜ ์ฝ”๋“œ๋Š”?

3.

 

โœ… 1. SplashScreen๋Š” ์–ด๋–ค ๋กœ์ง์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์„๊นŒ?

 

์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋Š”๊ฑด, Launch Storyboard ์—์„œ๋Š” ๋ทฐ์™€ ๊ด€๋ จํ•œ ์ปจํŠธ๋กค์„ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, ์ด ๊ตฌ๊ฐ„์„ ์ง€๋‚˜ Launch ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋„˜์–ด๊ฐ”์„ ๋•Œ๋ถ€ํ„ฐ ์•Œ๋ฆผ์„ ๋ณด์—ฌ์ฃผ๋˜๊ฐ€, ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๋˜๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

(๊ธฐ์กด) : LaunchScreen -> MainScreen ์ด๋ผ๊ณ  ํ•˜์ž.

(Splash) : LaunchScreen -> SplashView -> MainScreen ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

 

๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด, ๋Ÿฐ์น˜ ์Šคํฌ๋ฆฐ์—์„œ SplashView๋กœ ๋จผ์ € ์ด๋™ํ•˜์—ฌ, ์—ฌ๊ธฐ์„œ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ†ตํ•ด ์•ฑ์˜ ์‹œ์ž‘ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๋Š” ๋“ฑ UI์™€ ๊ด€๋ จํ•œ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ๊ฒ€์‚ฌํ•˜๋Š” ์กฐ๊ฑด์ด ์ •์ƒ์ ์œผ๋กœ ์•Œ๋งž๋Š”๋‹ค๋ฉด, MainScreen์œผ๋กœ ์ด๋™ํ•˜์—ฌ ๊ทธ์ œ์„œ์•ผ ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค...!

 

์ด๋Ÿฐ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์—ˆ๋‹ค๋‹ˆ... ๊ฐœ๋ฐœ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ƒ๊ฐ์„ ์ž˜ ๋“ฃ๋Š”๊ฒƒ๋„ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒˆ์‚ผ ๋Š๋‚€ ์‹œ๊ฐ„.

 

โœ… 2. SplashScreen์˜ ์ฝ”๋“œ๋Š”?

MainStroyboard

(์‚ฌ์ „์„ค์ •)

๊ฐ€์žฅ ์™ผ์ชฝ์ด SplashScreen์œผ๋กœ ํ™œ์šฉํ•  ๋ทฐ! - SplashViewController.swift๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.

//
//  DeviceConfig.swift
//  Covid19AlarmApp
//
//  Created by Hamlit Jason on 2021/08/01.
//

import Foundation
import SystemConfiguration

class DeviceManager {
    static let shared : DeviceManager = DeviceManager()
    
    var networkStatue : Bool {
        get {
            return checkDeviceNetworkStatus()
        }
    }
    
    private init() {
        
    }
    
    private func checkDeviceNetworkStatus() -> Bool {
            print("Check to Device Natwork Status....")
            var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
            zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
            zeroAddress.sin_family = sa_family_t(AF_INET)
            
            let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
                $0.withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
                    SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
                }
            }
            
            var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
            if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
                return false
            }
            
            // Working for Cellular and WIFI
            let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
            let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
            let ret = (isReachable && !needsConnection)
            return ret
        }
}

์œ„์˜ ์ฝ”๋“œ๋Š” ์• ํ”Œ ์™€์ดํŒŒ์ด ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋Š” ์ฝ”๋“œ์ธ๋ฐ, ์• ํ”Œ ๊ณต์‹๋ฌธ์„œ์— ๊ฐ€๋ฉด ๋‚˜์™€์žˆ์œผ๋‹ˆ ๋ณต๋ถ™ํ•ด์„œ DeviceConfig.swift๋ฅผ ๋งŒ๋“ ๋‹ค.

 

SplashViewController.swiftํŒŒ์ผ์˜ ์ฝ”๋“œ

//
//  LaunchViewController.swift
//  Covid19AlarmApp
//
//  Created by Hamlit Jason on 2021/08/01.
//

import UIKit

class SplashViewController : UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        checkDeviceNetworkStatus()
        
    }
    
    func checkDeviceNetworkStatus() {
        
        if !(DeviceManager.shared.networkStatue) {
            let alert: UIAlertController = UIAlertController(title: "๋„คํŠธ์›Œํฌ ์ƒํƒœ ํ™•์ธ", message: "๋„คํŠธ์›Œํฌ๊ฐ€ ๋ถˆ์•ˆ์ • ํ•ฉ๋‹ˆ๋‹ค.", preferredStyle: .alert)
            let action: UIAlertAction = UIAlertAction(title: "๋‹ค์‹œ ์‹œ๋„", style: .default, handler: { (action) in
                self.checkDeviceNetworkStatus()
            })
            alert.addAction(action)
            present(alert, animated: true, completion: nil)
        } else {
            guard let vc = self.storyboard?.instantiateViewController(identifier: "firstVC") else {
                print("ERROR")
                return
            }
            vc.modalTransitionStyle = .crossDissolve
            vc.modalPresentationStyle = .fullScreen
            present(vc, animated: true, completion: nil)
        }
        
    }
}

โ—๏ธ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ์ ์€, ๋‚ด ํฌ์ŠคํŒ…์˜ ์œ„์˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด, SplashScreen - NavigationController - ViewController ์ด๋Ÿฐ ์‹์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”๋ฐ NavigationController๋Š” ViewController์—์„œ Embed In ๋œ๊ฑฐ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, ์—ฌ๊ธฐ์— identifier๋ฅผ ์ฃผ๊ณ  ์ „ํ™˜ํ•ด์•ผ ์ดํ›„์— ๋‹ค๋ฅธ ๋ทฐ๋“ค๋„ Navigationํ˜•ํƒœ๋กœ ํ™”๋ฉด์ด ์ „ํ™˜๋œ๋‹ค.

 

๐ŸŸ  ViewDidAppear์—์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ด์œ ๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ, ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ๋‹ค๋ฅธ ์ž‘์—…์„ ๋งˆ์นœ ํ›„์— ์ ์šฉ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 

Comments