푸시, 딥링크 - 라이브 탭으로 이동하지 않아도 실행되도록 수정
This commit is contained in:
		| @@ -95,16 +95,26 @@ extension AppDelegate : UNUserNotificationCenterDelegate { | ||||
|         Messaging.messaging().appDidReceiveMessage(userInfo) | ||||
|          | ||||
|         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 { | ||||
|             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 | ||||
|         } | ||||
|          | ||||
|         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() | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -26,6 +26,7 @@ class AppState: ObservableObject { | ||||
|      | ||||
|     @Published var pushRoomId = 0 | ||||
|     @Published var pushChannelId = 0 | ||||
|     @Published var pushMessageId = 0 | ||||
|     @Published var pushAudioContentId = 0 | ||||
|     @Published var roomId = 0 { | ||||
|         didSet { | ||||
|   | ||||
| @@ -26,7 +26,8 @@ struct SodaLiveApp: App { | ||||
|         let queryItems = URLComponents(url: url, resolvingAgainstBaseURL: true)?.queryItems | ||||
|         let roomId = queryItems?.filter({$0.name == "room_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 { | ||||
|             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 { | ||||
|             DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { | ||||
|                 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) { | ||||
|   | ||||
| @@ -13,6 +13,7 @@ import Kingfisher | ||||
| struct HomeView: View { | ||||
|      | ||||
|     @StateObject var viewModel = HomeViewModel() | ||||
|     @StateObject var liveViewModel = LiveViewModel() | ||||
|     @StateObject var appState = AppState.shared | ||||
|     @StateObject var contentPlayManager = ContentPlayManager.shared | ||||
|      | ||||
| @@ -142,6 +143,59 @@ struct HomeView: View { | ||||
|                 } | ||||
|             } | ||||
|             .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