Skip to content

Commit 506d127

Browse files
authored
fix: Get Adobe cloud id directly from SDK (#19)
1 parent 0d1e5ea commit 506d127

1 file changed

Lines changed: 19 additions & 42 deletions

File tree

mParticle-Adobe-Media/MPKitAdobeMedia.m

Lines changed: 19 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ @implementation MPIAdobeApi
7777
@interface MPKitAdobeMedia ()
7878

7979
@property (nonatomic) NSString *organizationId;
80-
@property (nonatomic) MPIAdobe *adobe;
8180
@property id<AEPMediaTracker> defaultMediaTracker;
8281
@property (nonatomic, strong, nonnull) NSMutableDictionary<NSString *, id<AEPMediaTracker>> *mediaTrackers;
8382
@property (nonatomic) NSString *pushToken;
8483
@property (nonatomic) NSString *audienceManagerServer;
84+
@property (atomic) BOOL syncingId;
8585

8686
@end
8787

@@ -150,6 +150,8 @@ - (void)start {
150150
}
151151

152152
self->_started = YES;
153+
154+
[self syncId];
153155

154156
dispatch_async(dispatch_get_main_queue(), ^{
155157
NSDictionary *userInfo = @{mParticleKitInstanceKey:[[self class] kitCode]};
@@ -179,7 +181,6 @@ - (MPKitExecStatus *)logBaseEvent:(MPBaseEvent *)event {
179181
MPKitExecStatus *status = nil;
180182
if ([event isKindOfClass:[MPMediaEvent class]]) {
181183
MPMediaEvent *mediaEvent = (MPMediaEvent *)event;
182-
183184
status = [self routeMediaEvent:mediaEvent];
184185
} else if ([event isKindOfClass:[MPEvent class]]) {
185186
status = [self execStatus:MPKitReturnCodeSuccess];
@@ -341,11 +342,11 @@ - (AEPMediaType)contentTypeForMediaEvent:(MPMediaEvent *)mediaEvent {
341342
}
342343

343344
- (void)didEnterBackground:(NSNotification *)notification {
344-
[self sendNetworkRequest];
345+
[self syncId];
345346
}
346347

347348
- (void)willTerminate:(NSNotification *)notification {
348-
[self sendNetworkRequest];
349+
[self syncId];
349350
}
350351

351352
- (FilteredMParticleUser *)currentUser {
@@ -386,75 +387,51 @@ - (NSString *)pushToken {
386387
return _pushToken;
387388
}
388389

389-
- (void)sendNetworkRequest {
390-
NSString *marketingCloudId = [self marketingCloudIdFromIntegrationAttributes];
391-
if (!marketingCloudId) {
392-
marketingCloudId = [_adobe marketingCloudIdFromUserDefaults];
393-
if (marketingCloudId.length) {
394-
[[MParticle sharedInstance] setIntegrationAttributes:@{marketingCloudIdIntegrationAttributeKey: marketingCloudId} forKit:[[self class] kitCode]];
395-
}
396-
}
390+
- (void)syncId {
391+
if (self.syncingId) return;
397392

398-
NSString *advertiserId = [self advertiserId];
399-
NSString *pushToken = [self pushToken];
400-
FilteredMParticleUser *user = [self currentUser];
401-
NSDictionary *userIdentities = user.userIdentities;
402-
[_adobe sendRequestWithMarketingCloudId:marketingCloudId advertiserId:advertiserId pushToken:pushToken organizationId:_organizationId userIdentities:userIdentities audienceManagerServer:_audienceManagerServer completion:^(NSString *marketingCloudId, NSString *locationHint, NSString *blob, NSError *error) {
393+
self.syncingId = YES;
394+
[AEPMobileIdentity getExperienceCloudId:^(NSString * _Nullable mid, NSError * _Nullable error) {
403395
if (error) {
404-
NSLog(@"mParticle -> Adobe kit request failed with error: %@", error);
405-
return;
406-
}
407-
408-
NSMutableDictionary *integrationAttributes = [NSMutableDictionary dictionary];
409-
NSString *existingMarketingCloudId = [self marketingCloudIdFromIntegrationAttributes];
410-
if (marketingCloudId.length && existingMarketingCloudId.length == 0) {
411-
[integrationAttributes setObject:marketingCloudId forKey:marketingCloudIdIntegrationAttributeKey];
396+
NSLog(@"mParticle -> Adobe Media - Error getting Adobe cloud experience Id (marketing cloud Id): %@", error);
412397
} else {
413-
[integrationAttributes setObject:existingMarketingCloudId forKey:marketingCloudIdIntegrationAttributeKey];
414-
}
415-
if (locationHint.length) {
416-
[integrationAttributes setObject:locationHint forKey:locationHintIntegrationAttributeKey];
417-
}
418-
if (blob.length) {
419-
[integrationAttributes setObject:blob forKey:blobIntegrationAttributeKey];
420-
}
421-
422-
if (integrationAttributes.count) {
423-
[[MParticle sharedInstance] setIntegrationAttributes:integrationAttributes forKit:[[self class] kitCode]];
398+
NSString *existingMid = [self marketingCloudIdFromIntegrationAttributes];
399+
if (mid.length > 0 && ![mid isEqualToString:existingMid]) {
400+
[[MParticle sharedInstance] setIntegrationAttributes:@{marketingCloudIdIntegrationAttributeKey: mid} forKit:[[self class] kitCode]];
401+
}
424402
}
403+
self.syncingId = NO;
425404
}];
426405
}
427406

428407
- (MPKitExecStatus *)setDeviceToken:(NSData *)deviceToken {
429408
_pushToken = [[NSString alloc] initWithData:deviceToken encoding:NSUTF8StringEncoding];
430-
[self sendNetworkRequest];
409+
[self syncId];
431410
MPKitExecStatus *execStatus = [[MPKitExecStatus alloc] initWithSDKCode:[[self class] kitCode] returnCode:MPKitReturnCodeSuccess];
432411
return execStatus;
433412
}
434413

435414
- (MPKitExecStatus *)setUserIdentity:(NSString *)identityString identityType:(MPUserIdentity)identityType {
436-
[self sendNetworkRequest];
415+
[self syncId];
437416
MPKitExecStatus *execStatus = [[MPKitExecStatus alloc] initWithSDKCode:[[self class] kitCode] returnCode:MPKitReturnCodeSuccess];
438417
return execStatus;
439418
}
440419

441420
- (nonnull MPKitExecStatus *)didBecomeActive {
442-
[self sendNetworkRequest];
443-
421+
[self syncId];
444422
MPKitExecStatus *execStatus = [[MPKitExecStatus alloc] initWithSDKCode:@(MPKitInstanceAdobe) returnCode:MPKitReturnCodeSuccess];
445423
return execStatus;
446424
}
447425

448426
- (BOOL)shouldDelayMParticleUpload {
449427
NSString *marketingCloudId = [self marketingCloudIdFromIntegrationAttributes];
450-
return marketingCloudId.length == 0;
428+
return marketingCloudId.length == 0 || self.syncingId;
451429
}
452430

453431
- (MPKitAPI *)kitApi {
454432
if (_kitApi == nil) {
455433
_kitApi = [[MPKitAPI alloc] init];
456434
}
457-
458435
return _kitApi;
459436
}
460437

0 commit comments

Comments
 (0)