푸시, 딥링크 - 라이브 탭으로 이동하지 않아도 실행되도록 수정
This commit is contained in:
parent
d76b1c7a59
commit
a41c423991
|
@ -95,16 +95,26 @@ extension AppDelegate : UNUserNotificationCenterDelegate {
|
||||||
Messaging.messaging().appDidReceiveMessage(userInfo)
|
Messaging.messaging().appDidReceiveMessage(userInfo)
|
||||||
|
|
||||||
let roomIdString = userInfo["room_id"] as? String
|
let roomIdString = userInfo["room_id"] as? String
|
||||||
let audioContentIdString = userInfo["audio_content_id"] as? String
|
let contentIdString = userInfo["content_id"] as? String
|
||||||
|
let channelIdString = userInfo["channel_id"] as? String
|
||||||
|
let messageIdString = userInfo["message_id"] as? String
|
||||||
|
|
||||||
if let roomIdString = roomIdString, let roomId = Int(roomIdString), roomId > 0 {
|
if let roomIdString = roomIdString, let roomId = Int(roomIdString), roomId > 0 {
|
||||||
AppState.shared.pushRoomId = roomId
|
AppState.shared.pushRoomId = roomId
|
||||||
}
|
}
|
||||||
|
|
||||||
if let audioContentIdString = audioContentIdString, let audioContentId = Int(audioContentIdString), audioContentId > 0 {
|
if let contentIdString = contentIdString, let audioContentId = Int(contentIdString), audioContentId > 0 {
|
||||||
AppState.shared.pushAudioContentId = audioContentId
|
AppState.shared.pushAudioContentId = audioContentId
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let channelIdString = channelIdString, let channelId = Int(channelIdString), channelId > 0 {
|
||||||
|
AppState.shared.pushChannelId = channelId
|
||||||
|
}
|
||||||
|
|
||||||
|
if let messageIdString = messageIdString, let messageId = Int(messageIdString), messageId > 0 {
|
||||||
|
AppState.shared.pushMessageId = messageId
|
||||||
|
}
|
||||||
|
|
||||||
completionHandler()
|
completionHandler()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,7 @@ class AppState: ObservableObject {
|
||||||
|
|
||||||
@Published var pushRoomId = 0
|
@Published var pushRoomId = 0
|
||||||
@Published var pushChannelId = 0
|
@Published var pushChannelId = 0
|
||||||
|
@Published var pushMessageId = 0
|
||||||
@Published var pushAudioContentId = 0
|
@Published var pushAudioContentId = 0
|
||||||
@Published var roomId = 0 {
|
@Published var roomId = 0 {
|
||||||
didSet {
|
didSet {
|
||||||
|
|
|
@ -26,7 +26,8 @@ struct SodaLiveApp: App {
|
||||||
let queryItems = URLComponents(url: url, resolvingAgainstBaseURL: true)?.queryItems
|
let queryItems = URLComponents(url: url, resolvingAgainstBaseURL: true)?.queryItems
|
||||||
let roomId = queryItems?.filter({$0.name == "room_id"}).first?.value
|
let roomId = queryItems?.filter({$0.name == "room_id"}).first?.value
|
||||||
let channelId = queryItems?.filter({$0.name == "channel_id"}).first?.value
|
let channelId = queryItems?.filter({$0.name == "channel_id"}).first?.value
|
||||||
let audioContentId = queryItems?.filter({$0.name == "audio_content_id"}).first?.value
|
let messageId = queryItems?.filter({$0.name == "message_id"}).first?.value
|
||||||
|
let audioContentId = queryItems?.filter({$0.name == "content_id"}).first?.value
|
||||||
|
|
||||||
if let roomId = roomId {
|
if let roomId = roomId {
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
|
||||||
|
@ -40,6 +41,12 @@ struct SodaLiveApp: App {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let messageId = messageId {
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
|
||||||
|
AppState.shared.pushMessageId = Int(messageId) ?? 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if let audioContentId = audioContentId {
|
if let audioContentId = audioContentId {
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
|
||||||
AppState.shared.pushAudioContentId = Int(audioContentId) ?? 0
|
AppState.shared.pushAudioContentId = Int(audioContentId) ?? 0
|
||||||
|
|
|
@ -141,44 +141,6 @@ struct LiveView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.valueChanged(value: appState.pushRoomId) { value in
|
|
||||||
DispatchQueue.main.async {
|
|
||||||
appState.setAppStep(step: .main)
|
|
||||||
|
|
||||||
if value > 0 {
|
|
||||||
viewModel.enterRoom(roomId: value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.valueChanged(value: appState.pushChannelId) { value in
|
|
||||||
DispatchQueue.main.async {
|
|
||||||
appState.setAppStep(step: .main)
|
|
||||||
|
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
|
||||||
if value > 0 {
|
|
||||||
appState.setAppStep(step: .creatorDetail(userId: value))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.valueChanged(value: appState.pushAudioContentId) { value in
|
|
||||||
appState.setAppStep(step: .main)
|
|
||||||
|
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
|
||||||
if value > 0 {
|
|
||||||
appState.setAppStep(step: .contentDetail(contentId: value))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.onAppear {
|
|
||||||
if appState.pushRoomId > 0 {
|
|
||||||
viewModel.enterRoom(roomId: appState.pushRoomId)
|
|
||||||
} else if appState.pushChannelId > 0 {
|
|
||||||
appState.setAppStep(step: .creatorDetail(userId: appState.pushChannelId))
|
|
||||||
} else if appState.pushAudioContentId > 0 {
|
|
||||||
appState.setAppStep(step: .contentDetail(contentId: appState.pushAudioContentId))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func onCreateSuccess(response: CreateLiveRoomResponse) {
|
private func onCreateSuccess(response: CreateLiveRoomResponse) {
|
||||||
|
|
|
@ -13,6 +13,7 @@ import Kingfisher
|
||||||
struct HomeView: View {
|
struct HomeView: View {
|
||||||
|
|
||||||
@StateObject var viewModel = HomeViewModel()
|
@StateObject var viewModel = HomeViewModel()
|
||||||
|
@StateObject var liveViewModel = LiveViewModel()
|
||||||
@StateObject var appState = AppState.shared
|
@StateObject var appState = AppState.shared
|
||||||
@StateObject var contentPlayManager = ContentPlayManager.shared
|
@StateObject var contentPlayManager = ContentPlayManager.shared
|
||||||
|
|
||||||
|
@ -142,6 +143,59 @@ struct HomeView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.edgesIgnoringSafeArea(.bottom)
|
.edgesIgnoringSafeArea(.bottom)
|
||||||
|
.valueChanged(value: appState.pushRoomId) { value in
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
appState.setAppStep(step: .main)
|
||||||
|
|
||||||
|
if value > 0 {
|
||||||
|
liveViewModel.enterRoom(roomId: value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.valueChanged(value: appState.pushChannelId) { value in
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
||||||
|
if value > 0 {
|
||||||
|
appState.setAppStep(step: .main)
|
||||||
|
appState.setAppStep(step: .creatorDetail(userId: value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.valueChanged(value: appState.pushMessageId) { value in
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
appState.setAppStep(step: .main)
|
||||||
|
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
||||||
|
if value > 0 {
|
||||||
|
viewModel.currentTab = .message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.valueChanged(value: appState.pushAudioContentId) { value in
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
||||||
|
if value > 0 {
|
||||||
|
appState.setAppStep(step: .main)
|
||||||
|
appState.setAppStep(step: .contentDetail(contentId: value))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.onAppear {
|
||||||
|
if appState.pushRoomId > 0 {
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
|
||||||
|
liveViewModel.enterRoom(roomId: appState.pushRoomId)
|
||||||
|
}
|
||||||
|
} else if appState.pushChannelId > 0 {
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
|
||||||
|
appState.setAppStep(step: .creatorDetail(userId: appState.pushChannelId))
|
||||||
|
}
|
||||||
|
} else if appState.pushAudioContentId > 0 {
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
|
||||||
|
appState.setAppStep(step: .contentDetail(contentId: appState.pushAudioContentId))
|
||||||
|
}
|
||||||
|
} else if appState.pushMessageId > 0 {
|
||||||
|
viewModel.currentTab = .message
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue