하이브리드앱을 개발시 푸시 메시지 기능을 적용할 수 있는데,
링크를 걸어서 사용자가 알림 메시지 선택시 지정한 링크로 이동하는 방법에 대한 설명이다.
AppDelegate.swift
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse) async {
let userInfo = response.notification.request.content.userInfo
// [START_EXCLUDE]
// Print message ID.
if let messageID = userInfo[gcmMessageIDKey] {
print("Message ID: \(messageID)")
}
// [END_EXCLUDE]
// With swizzling disabled you must let Messaging know about the message, for Analytics
// Messaging.messaging().appDidReceiveMessage(userInfo)
// Print full message.
print(userInfo)
//let link = userInfo[myLink]
if let myLinkOrg = userInfo[myLink]{
link_org = myLinkOrg as! String
print("link_org: \(link_org)")
}else if let aps = userInfo["aps"] as? NSDictionary{
if let link = aps["link"] as? NSString{
link_org = link as String
print("link_org !!: \(link_org)")
}
}
print("url link: \(link_org)")
if link_org != ""{
if UIApplication.shared.applicationState == .active {
NSLog("포그라운드에서 클릭")
let vc = UIApplication.shared.windows.first!.rootViewController as! ViewController
let myUrl = URL(string: link_org)
let myRequest = URLRequest(url: myUrl!)
vc.mainWebView.load(myRequest)
}else{
NSLog("백그라운드에서 클릭")
let userDefault = UserDefaults.standard
userDefault.set(link_org, forKey: "link")
userDefault.synchronize()
}
}
}
if UIApplication.shared.applicationState == .active {
위 소스를 이용하여 현재 앱이 액티브상태(포그라운드)인지 확인하고, 그럴 경우
let vc = UIApplication.shared.windows.first!.rootViewController as! ViewController
let myUrl = URL(string: link_org)
let myRequest = URLRequest(url: myUrl!)
vc.mainWebView.load(myRequest)
ViewController.swift 파일에 있는 mainWebView 변수를 호출하여 페이지를 로딩한다.
let userDefault = UserDefaults.standard
userDefault.set(link_org, forKey: "link")
userDefault.synchronize()
위 소스를 이용하여 현재 앱이 액티브상태(백그라운드)가 아니면 UserDefaults를 이용하여 key - value 값을 전달한다.
여기서는 link 라는 key값을 설정했다.
ViewController.swift
import UIKit
import WebKit
import FirebaseMessaging
class ViewController: UIViewController {
let url = URL(string: "https://m.naver.com") // 운영 시작 URL
var mainWebView = WKWebView(frame: CGRect(x: 0.0, y: 0.0, width: 0.1, height: 0.1)) // 메인 웹뷰 설정
override func viewDidLoad() {
super.viewDidLoad()
...
let request : URLRequest = URLRequest(url: url!)
mainWebView.load(request)
//백그라운드에서 포그라운드로 전환되면 실행되는 함수
NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification, object: nil, queue: nil) { (Notification) in
let userDefault = UserDefaults.standard
let pushUrl:String? = userDefault.string(forKey: "link")
//링크가 있는 푸시를 클릭하는 경우에만 실행
if(pushUrl != nil){
NSLog(pushUrl!)
NSLog("푸시에서 전달받은 웹뷰로")
let myUrl = URL(string: pushUrl!)
let myRequest = URLRequest(url: myUrl!)
self.mainWebView.load(myRequest)
userDefault.removeObject(forKey: "link")
userDefault.synchronize()
}
}
}
<< 참고 링크 >>
iOS 푸시알림 APN 링크 받아서 링크주소로 웹페이지 연결:
https://developer111.tistory.com/50
[iOS] 푸시알림 APN 링크 받아서 링크주소로 웹뷰 이동하기
안녕하세요. iOS에서는 푸시알림을 애플의 자체 서비스인 Apple Push Notification Service를 통해 이루어집니다. 우리는 이전에 포스팅들을 통해 파이어베이스를 통해 파이어베이스 콘솔에서 푸시를 받
developer111.tistory.com
Java Spring FCM 푸시 전송시 link 설정 :
https://developer111.tistory.com/29
[파이어베이스] 안드로이드 웹뷰 푸시알림으로 특정 링크로 접속하도록 구현
웹뷰를 통해 구현한 하이브리드 앱이 있습니다. 웹서버는 스프링 프레임워크로 구현을 해주었고, 푸시알림을 보내고 이를 받은 클라이언트가 푸시알림을 누르면 특정 url로 이동할 수 있게끔 구
developer111.tistory.com
iOS FCM 푸시전송, postman 연결 (24년 6월까지 가능)
[Swift] FCM푸시 연결부터 Postman 테스트 푸시까지
FCM을 적용하면서 겪었던 경험을 공유하려고해요 FCM = Firebase Cloud Messaging 의 약자로 firebase에서 제공해주는 푸시알림기능이에요 먼저 FCM 설정하는 방법을 빠르게 알아보도록할게요 Firebase 설정하
nsios.tistory.com
Java Spring FCM 푸시 전송 :
https://kbwplace.tistory.com/179
[SpringBoot] FCM을 통해 Push 알림 보내기 (FCM push notification)
FCM은 Firebase Cloud Messaging의 약자로 기존 GCM에서 모든 플랫폼에 푸쉬를 쉽게 보낼 수 있도록 통합된 솔루션이다. Notification 콘솔의 GUI나 Admin SDK를 이용해 서버 등에서 FCM의 백에 요청을 보내면, FCM
kbwplace.tistory.com
'iOS' 카테고리의 다른 글
iOS xcode swift에서 FCM 푸시(알람) 기능 적용하기 (0) | 2024.04.17 |
---|---|
[objective-c] 콜백 리스너 예제(Blocks Sample Code) (0) | 2023.01.02 |
맥북 ios 인증서 내보내기 (0) | 2022.12.01 |
Swift 문자열 자르기, 문자열 붙이기 (0) | 2020.04.17 |
swift xcode 상태바 변경, 다크모드 (0) | 2020.04.07 |