idfa 업데이트 추가

This commit is contained in:
Yu Sung 2024-02-27 01:10:32 +09:00
parent 68ac0a4e76
commit 91504bbda9
5 changed files with 47 additions and 1 deletions

View File

@ -114,6 +114,7 @@ struct HomeView: View {
} }
.onAppear { .onAppear {
pushTokenUpdate() pushTokenUpdate()
viewModel.fetchAndUpdateIdfa()
viewModel.getMemberInfo() viewModel.getMemberInfo()
viewModel.getEventPopup() viewModel.getEventPopup()
viewModel.addAllPlaybackTracking() viewModel.addAllPlaybackTracking()

View File

@ -8,6 +8,9 @@
import Foundation import Foundation
import Combine import Combine
import AppTrackingTransparency
import AdSupport
final class HomeViewModel: ObservableObject { final class HomeViewModel: ObservableObject {
private var subscription = Set<AnyCancellable>() private var subscription = Set<AnyCancellable>()
@ -37,6 +40,25 @@ final class HomeViewModel: ObservableObject {
.store(in: &subscription) .store(in: &subscription)
} }
func fetchAndUpdateIdfa() {
ATTrackingManager.requestTrackingAuthorization { [unowned self] status in
if status == .authorized {
let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
self.userRepository.updateIdfa(request: IdfaUpdateRequest(adid: idfa))
.sink { result in
switch result {
case .finished:
DEBUG_LOG("finish")
case .failure(let error):
ERROR_LOG(error.localizedDescription)
}
} receiveValue: { _ in
}
.store(in: &self.subscription)
}
}
}
func getMemberInfo() { func getMemberInfo() {
userRepository.getMemberInfo() userRepository.getMemberInfo()
.sink { result in .sink { result in

View File

@ -0,0 +1,12 @@
//
// IdfaUpdateRequest.swift
// SodaLive
//
// Created by klaus on 2/26/24.
//
import Foundation
struct IdfaUpdateRequest: Encodable {
let adid: String
}

View File

@ -30,6 +30,7 @@ enum UserApi {
case getChangeNicknamePrice case getChangeNicknamePrice
case checkNickname(nickname: String) case checkNickname(nickname: String)
case changeNickname(request: ProfileUpdateRequest) case changeNickname(request: ProfileUpdateRequest)
case updateIdfa(request: IdfaUpdateRequest)
} }
extension UserApi: TargetType { extension UserApi: TargetType {
@ -98,6 +99,9 @@ extension UserApi: TargetType {
case .changeNickname: case .changeNickname:
return "/member/change/nickname" return "/member/change/nickname"
case .updateIdfa:
return "/member/adid/update"
} }
} }
@ -110,7 +114,7 @@ extension UserApi: TargetType {
case .searchUser, .getMypage, .getMemberInfo, .getMyProfile, .getChangeNicknamePrice, .checkNickname: case .searchUser, .getMypage, .getMemberInfo, .getMyProfile, .getChangeNicknamePrice, .checkNickname:
return .get return .get
case .updatePushToken, .profileUpdate, .changeNickname: case .updatePushToken, .profileUpdate, .changeNickname, .updateIdfa:
return .put return .put
} }
} }
@ -167,6 +171,9 @@ extension UserApi: TargetType {
case .changeNickname(let request): case .changeNickname(let request):
return .requestJSONEncodable(request) return .requestJSONEncodable(request)
case .updateIdfa(let request):
return .requestJSONEncodable(request)
} }
} }

View File

@ -108,4 +108,8 @@ final class UserRepository {
func changeNickname(request: ProfileUpdateRequest) -> AnyPublisher<Response, MoyaError> { func changeNickname(request: ProfileUpdateRequest) -> AnyPublisher<Response, MoyaError> {
return api.requestPublisher(.changeNickname(request: request)) return api.requestPublisher(.changeNickname(request: request))
} }
func updateIdfa(request: IdfaUpdateRequest) -> AnyPublisher<Response, MoyaError> {
return api.requestPublisher(.updateIdfa(request: request))
}
} }