Skip to content

Commit 20c9f89

Browse files
authored
add heartbeat support for iid (#4323)
* add heartbeat support for iid * format code * fix tests * fix formatting
1 parent b88bee8 commit 20c9f89

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

Example/InstanceID/Tests/FIRInstanceIDTokenOperationsTest.m

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#import "Firebase/InstanceID/NSError+FIRInstanceID.h"
3434

3535
#import <FirebaseCore/FIRAppInternal.h>
36+
#import <GoogleUtilities/GULHeartbeatDateStorage.h>
3637

3738
static NSString *kDeviceID = @"fakeDeviceID";
3839
static NSString *kSecretToken = @"fakeSecretToken";
@@ -83,6 +84,11 @@ - (void)setUp {
8384
_keyPair =
8485
[[FIRInstanceIDKeychain sharedInstance] generateKeyPairWithPrivateTag:kPrivateKeyPairTag
8586
publicTag:kPublicKeyPairTag];
87+
88+
NSString *const kHeartbeatStorageFile = @"HEARTBEAT_INFO_STORAGE";
89+
GULHeartbeatDateStorage *dataStorage =
90+
[[GULHeartbeatDateStorage alloc] initWithFileName:kHeartbeatStorageFile];
91+
[[NSFileManager defaultManager] removeItemAtURL:[dataStorage fileURL] error:nil];
8692
}
8793

8894
- (void)tearDown {
@@ -319,7 +325,7 @@ - (void)testHTTPAuthHeaderGenerationFromCheckin {
319325
XCTAssertEqualObjects(generatedHeader, expectedHeader);
320326
}
321327

322-
- (void)testTokenFetchOperationFirebaseUserAgentHeader {
328+
- (void)testTokenFetchOperationFirebaseUserAgentAndHeartbeatHeader {
323329
XCTestExpectation *completionExpectation =
324330
[self expectationWithDescription:@"completionExpectation"];
325331

@@ -336,6 +342,8 @@ - (void)testTokenFetchOperationFirebaseUserAgentHeader {
336342
^(NSURLRequest *request, FIRInstanceIDURLRequestTestResponseBlock response) {
337343
NSString *userAgentValue = request.allHTTPHeaderFields[kFIRInstanceIDFirebaseUserAgentKey];
338344
XCTAssertEqualObjects(userAgentValue, [FIRApp firebaseUserAgent]);
345+
NSString *heartBeatCode = request.allHTTPHeaderFields[kFIRInstanceIDFirebaseHeartbeatKey];
346+
XCTAssertEqualObjects(heartBeatCode, @"3");
339347

340348
// Return a response with Error=RST
341349
NSData *responseBody = [self dataForFetchRequest:request returnValidToken:NO];

Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ NS_ASSUME_NONNULL_BEGIN
2020

2121
FOUNDATION_EXPORT NSString *const kFIRInstanceIDFirebaseUserAgentKey;
2222

23+
FOUNDATION_EXPORT NSString *const kFIRInstanceIDFirebaseHeartbeatKey;
24+
2325
@interface FIRInstanceIDTokenFetchOperation : FIRInstanceIDTokenOperation
2426

2527
- (instancetype)initWithAuthorizedEntity:(NSString *)authorizedEntity

Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,16 @@
2626
#import "NSError+FIRInstanceID.h"
2727

2828
#import <FirebaseCore/FIRAppInternal.h>
29+
#import <FirebaseCore/FIRHeartbeatInfo.h>
2930

3031
// We can have a static int since this error should theoretically only
3132
// happen once (for the first time). If it repeats there is something
3233
// else that is wrong.
3334
static int phoneRegistrationErrorRetryCount = 0;
3435
static const int kMaxPhoneRegistrationErrorRetryCount = 10;
3536
NSString *const kFIRInstanceIDFirebaseUserAgentKey = @"X-firebase-client";
37+
NSString *const kFIRInstanceIDFirebaseHeartbeatKey = @"X-firebase-client-log-type";
38+
NSString *const kFIRInstanceIDHeartbeatTag = @"fire-iid";
3639

3740
@implementation FIRInstanceIDTokenFetchOperation
3841

@@ -60,6 +63,8 @@ - (void)performTokenOperation {
6063
[request setValue:checkinVersionInfo forHTTPHeaderField:@"info"];
6164
[request setValue:[FIRApp firebaseUserAgent]
6265
forHTTPHeaderField:kFIRInstanceIDFirebaseUserAgentKey];
66+
[request setValue:@([FIRHeartbeatInfo heartbeatCodeForTag:kFIRInstanceIDHeartbeatTag]).stringValue
67+
forHTTPHeaderField:kFIRInstanceIDFirebaseHeartbeatKey];
6368

6469
// Build form-encoded body
6570
NSString *deviceAuthID = self.checkinPreferences.deviceID;

0 commit comments

Comments
 (0)