iOS Swift 일정시간 지연후 실행, 타이머

 

 

 

 

 

 

 

하이브리드앱에서 푸시메시지가 왔을때 터치하면 해당 앱이 실행이 된다.

만약 푸시메시지에 링크가 걸려있으면, 해당 링크로 이동하도록 코딩이 되어 있지만

앱이 완전히 종료되어 있는 상태에서는 동작하지 않고, 백그라운드에 있는 상태에서는 동작이 되었다.

확인해보니, 푸시메시지를 터치할때 해당앱이 실행이 완전히 된후, 링크 이동 명령을 해야지만 정상적으로 동작이 된다.

따라서, 링크 이동 명령에 약간의 시간 지연, 즉 타이머를 주면 정상적으로 동작한다.

 

AppDelegate.swift

    //MARK: Foreground에서 푸쉬와서 클릭할 때
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
        
        let userInfo = response.notification.request.content.userInfo
        print(userInfo)
        let link = userInfo[myLink]
        link_org = userInfo[myLink] as! String
        print("url link: \(String:link)")
		// 2초후 timerAction() 함수 실행
        mTimer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(timerAction), userInfo: nil, repeats: false)
        completionHandler()
    }
    
    @objc func timerAction(timer: Timer){
    if let viewController = self.window?.rootViewController as? ViewController {
        viewController.pushLoad(pushurl: link_org)
    }
 

 

ViewController.swift

    var mainWebView = WKWebView()
        
    func pushLoad(pushurl : String){
        guard let linkUrl = URL(string: pushurl) else { return }
        print("ViewController linkUrl: \(String(describing: linkUrl))")
        mainWebView.load(linkUrl)
    }

 

+ Recent posts