Skip to content

Commit 29fe2db

Browse files
feat: Update Hashed Email for Rokt (#23)
* feat: Update Hashed Email for Rokt
1 parent fb427ab commit 29fe2db

2 files changed

Lines changed: 14 additions & 22 deletions

File tree

mParticle-Rokt/MPKitRokt.m

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -334,22 +334,11 @@ + (void)addIdentityAttributes:(NSMutableDictionary<NSString *, NSString *> * _Nu
334334

335335
+ (void)handleHashedEmail:(NSMutableDictionary<NSString *, NSString *> * _Nullable)attributes {
336336
NSString *emailKey = [MPKitRokt stringForIdentityType:MPIdentityEmail];
337-
NSString *otherKey = [MPKitRokt stringForIdentityType:MPIdentityOther];
338337
NSString *hashedEmailValue = attributes[@"emailsha256"];
339338

340-
// Remove email and other is hashed vlaue already set
339+
// Remove email if hashed value set
341340
if (hashedEmailValue != nil) {
342341
[attributes removeObjectForKey:emailKey];
343-
[attributes removeObjectForKey:otherKey];
344-
}
345-
346-
NSString *otherValue = attributes[otherKey];
347-
348-
// Remove email and replace key on other if it's set
349-
if (otherValue != nil) {
350-
[attributes removeObjectForKey:emailKey];
351-
attributes[@"emailsha256"] = otherValue;
352-
[attributes removeObjectForKey:otherKey];
353342
}
354343
}
355344

@@ -393,7 +382,8 @@ + (NSString *)stringForIdentityType:(MPIdentity)identityType {
393382
return @"microsoft";
394383

395384
case MPIdentityOther:
396-
return @"other";
385+
// As of 7/30/2025, "MPIdentityOther" is used by Rokt customers to identify based off hashed email
386+
return @"emailsha256";
397387

398388
case MPIdentityTwitter:
399389
return @"twitter";

mParticle_RoktTests/mParticle_RoktTests.m

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ - (void)testAddIdentityAttributes {
244244
XCTAssertEqualObjects(passedAttributes[@"facebookcustomaudienceid"], @"testCustomAudienceID");
245245
XCTAssertEqualObjects(passedAttributes[@"google"], @"testGoogle");
246246
XCTAssertEqualObjects(passedAttributes[@"microsoft"], @"testMicrosoft");
247-
XCTAssertEqualObjects(passedAttributes[@"other"], @"testOther");
247+
XCTAssertNil(passedAttributes[@"other"]);
248+
XCTAssertEqualObjects(passedAttributes[@"emailsha256"], @"testOther");
248249
XCTAssertEqualObjects(passedAttributes[@"twitter"], @"testTwitter");
249250
XCTAssertEqualObjects(passedAttributes[@"yahoo"], @"testYahoo");
250251
XCTAssertEqualObjects(passedAttributes[@"other2"], @"testOther2");
@@ -307,7 +308,8 @@ - (void)testAddIdentityAttributesWithExistingAttributes {
307308
XCTAssertEqualObjects(passedAttributes[@"facebookcustomaudienceid"], @"testCustomAudienceID");
308309
XCTAssertEqualObjects(passedAttributes[@"google"], @"testGoogle");
309310
XCTAssertEqualObjects(passedAttributes[@"microsoft"], @"testMicrosoft");
310-
XCTAssertEqualObjects(passedAttributes[@"other"], @"testOther");
311+
XCTAssertNil(passedAttributes[@"other"]);
312+
XCTAssertEqualObjects(passedAttributes[@"emailsha256"], @"testOther");
311313
XCTAssertEqualObjects(passedAttributes[@"twitter"], @"testTwitter");
312314
XCTAssertEqualObjects(passedAttributes[@"yahoo"], @"testYahoo");
313315
XCTAssertEqualObjects(passedAttributes[@"other2"], @"testOther2");
@@ -504,24 +506,24 @@ - (void)testHandleHashedEmailOtherOverride {
504506

505507
[MPKitRokt handleHashedEmail:passedAttributes];
506508

507-
XCTAssertNil(passedAttributes[@"email"]);
508-
XCTAssertNil(passedAttributes[@"other"]);
509-
XCTAssertEqualObjects(passedAttributes[@"emailsha256"], @"test@gmail.com");
510-
XCTAssertTrue(passedAttributes.allKeys.count == 1);
509+
XCTAssertEqualObjects(passedAttributes[@"email"], @"foo@gmail.com");
510+
XCTAssertEqualObjects(passedAttributes[@"other"], @"test@gmail.com");
511+
XCTAssertNil(passedAttributes[@"emailsha256"]);
512+
XCTAssertTrue(passedAttributes.allKeys.count == 2);
511513
}
512514

513515
- (void)testHandleHashedEmailHashedOverride {
514516
NSMutableDictionary<NSString *, NSString *> *passedAttributes = [[NSMutableDictionary alloc] init];
515517
[passedAttributes setObject:@"foo@gmail.com" forKey:@"email"];
516-
[passedAttributes setObject:@"test@gmail.com" forKey:@"other"];
518+
[passedAttributes setObject:@"foo-value" forKey:@"other"];
517519
[passedAttributes setObject:@"test2@gmail.com" forKey:@"emailsha256"];
518520

519521
[MPKitRokt handleHashedEmail:passedAttributes];
520522

521523
XCTAssertNil(passedAttributes[@"email"]);
522-
XCTAssertNil(passedAttributes[@"other"]);
524+
XCTAssertEqualObjects(passedAttributes[@"other"], @"foo-value");
523525
XCTAssertEqualObjects(passedAttributes[@"emailsha256"], @"test2@gmail.com");
524-
XCTAssertTrue(passedAttributes.allKeys.count == 1);
526+
XCTAssertTrue(passedAttributes.allKeys.count == 2);
525527
}
526528

527529
- (void)testTransformValuesToString {

0 commit comments

Comments
 (0)