푸시, 딥링크 - 라이브 탭으로 이동하지 않아도 실행되도록 수정
This commit is contained in:
		| @@ -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 | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|      |      | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung