Skip to content

Commit

Permalink
Merge pull request #302 from SourcePointUSA/SP-7047_update_appletrack…
Browse files Browse the repository at this point in the history
…ing_request_with_iosversion_msgid

[SP-7047] Add OS Version and Msg Id to Apple tracking API request
  • Loading branch information
vilasma authored Jun 3, 2021
2 parents d717426 + 7267486 commit f01074a
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 9 deletions.
12 changes: 10 additions & 2 deletions ConsentViewController/Classes/SPConsentManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import Foundation
var ccpaUUID: String { storage.localState["ccpa"]?.dictionaryValue?["uuid"] as? String ?? "" }
var gdprUUID: String { storage.localState["gdpr"]?.dictionaryValue?["uuid"] as? String ?? "" }
var propertyId: Int?
var iOSMessagePartitionUUID: String?

public static func clearAllData() {
SPUserDefaults(storage: UserDefaults.standard).clear()
Expand Down Expand Up @@ -146,7 +147,12 @@ import Foundation
self?.propertyId = messagesResponse.propertyId
self?.messageControllersStack = messagesResponse.campaigns
.filter { $0.message != nil }
.filter { $0.messageMetaData != nil }
.filter {
if $0.type == .ios14 {
self?.iOSMessagePartitionUUID = $0.messageMetaData?.messagePartitionUUID
}
return $0.messageMetaData != nil
}
.filter { $0.url != nil }
.compactMap { self?.messageToViewController(
$0.url!,
Expand Down Expand Up @@ -342,7 +348,9 @@ extension SPConsentManager: SPMessageUIDelegate {
uuid: uuid,
uuidType: uuidType,
messageId: messageId,
idfaStatus: status
idfaStatus: status,
iosVersion: deviceManager.osVersion(),
partitionUUID: iOSMessagePartitionUUID
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,14 @@
import Foundation

struct AppleTrackingPayload: Codable {
let appleMsgId: Int?
let appleChoice: SPIDFAStatus
let appleMsgId: Int?
let messagePartitionUUID: String?

enum CodingKeys: String, CodingKey {
case appleChoice, appleMsgId
case messagePartitionUUID = "partition_uuid"
}
}

struct IDFAStatusReportRequest: Codable {
Expand All @@ -18,16 +24,28 @@ struct IDFAStatusReportRequest: Codable {
let uuid: String?
let uuidType: SPCampaignType?
let requestUUID: UUID
let iosVersion: String
let appleTracking: AppleTrackingPayload
}

extension IDFAStatusReportRequest {
init(accountId: Int, propertyId: Int?, uuid: String?, uuidType: SPCampaignType?, requestUUID: UUID, messageId: Int?, idfaStatus: SPIDFAStatus) {
init(
accountId: Int,
propertyId: Int?,
uuid: String?,
uuidType: SPCampaignType?,
requestUUID: UUID,
messageId: Int?,
idfaStatus: SPIDFAStatus,
iosVersion: String,
messagePartitionUUID: String
) {
self.accountId = accountId
self.propertyId = propertyId
self.uuid = uuid
self.uuidType = uuidType
self.requestUUID = requestUUID
appleTracking = AppleTrackingPayload(appleMsgId: messageId, appleChoice: idfaStatus)
self.iosVersion = iosVersion
appleTracking = AppleTrackingPayload(appleChoice: idfaStatus, appleMsgId: messageId, messagePartitionUUID: messagePartitionUUID)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,12 @@ struct MessageMetaData: Decodable, Equatable {
let categoryId: MessageCategory
let subCategoryId: MessageSubCategory
let messageId: Int
let messagePartitionUUID: String

enum CodingKeys: String, CodingKey {
case categoryId, subCategoryId, messageId
case messagePartitionUUID = "prtnUUID"
}
}

struct Campaign: Equatable {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@ protocol SourcePointProtocol {
uuid: String?,
uuidType: SPCampaignType?,
messageId: Int?,
idfaStatus: SPIDFAStatus
idfaStatus: SPIDFAStatus,
iosVersion: String,
partitionUUID: String?
)

func customConsentGDPR(
Expand Down Expand Up @@ -214,15 +216,15 @@ class SourcePointClient: SourcePointProtocol {
}
}

func reportIdfaStatus(propertyId: Int?, uuid: String?, uuidType: SPCampaignType?, messageId: Int?, idfaStatus: SPIDFAStatus) {
func reportIdfaStatus(propertyId: Int?, uuid: String?, uuidType: SPCampaignType?, messageId: Int?, idfaStatus: SPIDFAStatus, iosVersion: String, partitionUUID: String?) {
_ = JSONEncoder().encodeResult(IDFAStatusReportRequest(
accountId: accountId,
propertyId: propertyId,
uuid: uuid,
uuidType: uuidType,
requestUUID: UUID(),
messageId: messageId,
idfaStatus: idfaStatus
iosVersion: iosVersion,
appleTracking: AppleTrackingPayload(appleChoice: idfaStatus, appleMsgId: messageId, messagePartitionUUID: partitionUUID)
)).map {
client.post(urlString: SourcePointClient.IDFA_RERPORT_URL.absoluteString, body: $0) { _ in }
}
Expand Down

0 comments on commit f01074a

Please sign in to comment.