Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Firebase/InstanceID/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# unreleased
- [changed] Remove FIRInstanceIDURLQueryItem in favor of NSURLQueryItem. (#5835)

# 2020-07 -- 4.5.0
- [changed] Functionally neutral updated import references for dependencies. (#5824)
Expand Down
3 changes: 3 additions & 0 deletions Firebase/InstanceID/FIRInstanceIDConstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ FOUNDATION_EXPORT NSString *const kFIRInstanceIDTokenOptionsFirebaseAppIDKey;
/// The key to enable auto-register by swizzling AppDelegate's methods.
FOUNDATION_EXPORT NSString *const kFIRInstanceIDAppDelegateProxyEnabledInfoPlistKey;

/// The key for InstallationID or InstanceID in token request.
FOUNDATION_EXPORT NSString *const kFIRInstanceIDParamInstanceID;

/// Error code for missing entitlements in Keychain. iOS Keychain error
/// https://forums.developer.apple.com/thread/4743
FOUNDATION_EXPORT const int kFIRInstanceIDSecMissingEntitlementErrorCode;
1 change: 1 addition & 0 deletions Firebase/InstanceID/FIRInstanceIDConstants.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
NSString *const kFIRInstanceIDTokenOptionsAPNSKey = @"apns_token";
NSString *const kFIRInstanceIDTokenOptionsAPNSIsSandboxKey = @"apns_sandbox";
NSString *const kFIRInstanceIDTokenOptionsFirebaseAppIDKey = @"gmp_app_id";
NSString *const kFIRInstanceIDParamInstanceID = @"appid";

NSString *const kFIRInstanceIDAppDelegateProxyEnabledInfoPlistKey =
@"FirebaseAppDelegateProxyEnabled";
Expand Down
19 changes: 10 additions & 9 deletions Firebase/InstanceID/FIRInstanceIDTokenDeleteOperation.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
#import "FIRInstanceIDTokenDeleteOperation.h"

#import "FIRInstanceIDCheckinPreferences.h"
#import "FIRInstanceIDConstants.h"
#import "FIRInstanceIDDefines.h"
#import "FIRInstanceIDLogger.h"
#import "FIRInstanceIDTokenOperation+Private.h"
#import "FIRInstanceIDURLQueryItem.h"
#import "FIRInstanceIDUtilities.h"
#import "NSError+FIRInstanceID.h"

Expand All @@ -47,24 +47,25 @@ - (void)performTokenOperation {

// Build form-encoded body
NSString *deviceAuthID = self.checkinPreferences.deviceID;
NSMutableArray<FIRInstanceIDURLQueryItem *> *queryItems =
NSMutableArray<NSURLQueryItem *> *queryItems =
[FIRInstanceIDTokenOperation standardQueryItemsWithDeviceID:deviceAuthID scope:self.scope];
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"delete" value:@"true"]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"delete" value:@"true"]];
if (self.action == FIRInstanceIDTokenActionDeleteTokenAndIID) {
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"iid-operation"
value:@"delete"]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"iid-operation" value:@"delete"]];
}
if (self.authorizedEntity) {
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"sender"
value:self.authorizedEntity]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"sender" value:self.authorizedEntity]];
}
// Typically we include our public key-signed url items, but in some cases (like deleting all FCM
// tokens), we don't.
if (self.instanceID.length > 0) {
[queryItems addObjectsFromArray:[self queryItemsWithInstanceID:self.instanceID]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:kFIRInstanceIDParamInstanceID
value:self.instanceID]];
}

NSString *content = FIRInstanceIDQueryFromQueryItems(queryItems);
NSURLComponents *components = [[NSURLComponents alloc] init];
components.queryItems = queryItems;
NSString *content = components.query;
request.HTTPBody = [content dataUsingEncoding:NSUTF8StringEncoding];
FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeTokenDeleteOperationFetchRequest,
@"Unregister request to %@ content: %@", FIRInstanceIDRegisterServer(),
Expand Down
31 changes: 16 additions & 15 deletions Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
#import "FIRInstanceIDDefines.h"
#import "FIRInstanceIDLogger.h"
#import "FIRInstanceIDTokenOperation+Private.h"
#import "FIRInstanceIDURLQueryItem.h"
#import "FIRInstanceIDUtilities.h"
#import "NSError+FIRInstanceID.h"

Expand Down Expand Up @@ -65,15 +64,16 @@ - (void)performTokenOperation {

// Build form-encoded body
NSString *deviceAuthID = self.checkinPreferences.deviceID;
NSMutableArray<FIRInstanceIDURLQueryItem *> *queryItems =
NSMutableArray<NSURLQueryItem *> *queryItems =
[[self class] standardQueryItemsWithDeviceID:deviceAuthID scope:self.scope];
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"sender"
value:self.authorizedEntity]];
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"X-subtype"
value:self.authorizedEntity]];

[queryItems addObjectsFromArray:[self queryItemsWithInstanceID:self.instanceID]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"sender" value:self.authorizedEntity]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"X-subtype"
value:self.authorizedEntity]];

if (self.instanceID.length > 0) {
[queryItems addObject:[NSURLQueryItem queryItemWithName:kFIRInstanceIDParamInstanceID
value:self.instanceID]];
}
// Create query items from passed-in options
id apnsTokenData = self.options[kFIRInstanceIDTokenOptionsAPNSKey];
id apnsSandboxValue = self.options[kFIRInstanceIDTokenOptionsAPNSIsSandboxKey];
Expand All @@ -82,21 +82,22 @@ - (void)performTokenOperation {
NSString *APNSString = FIRInstanceIDAPNSTupleStringForTokenAndServerType(
apnsTokenData, ((NSNumber *)apnsSandboxValue).boolValue);
// The name of the query item happens to be the same as the dictionary key
FIRInstanceIDURLQueryItem *item =
[FIRInstanceIDURLQueryItem queryItemWithName:kFIRInstanceIDTokenOptionsAPNSKey
value:APNSString];
NSURLQueryItem *item = [NSURLQueryItem queryItemWithName:kFIRInstanceIDTokenOptionsAPNSKey
value:APNSString];
[queryItems addObject:item];
}
id firebaseAppID = self.options[kFIRInstanceIDTokenOptionsFirebaseAppIDKey];
if ([firebaseAppID isKindOfClass:[NSString class]]) {
// The name of the query item happens to be the same as the dictionary key
FIRInstanceIDURLQueryItem *item =
[FIRInstanceIDURLQueryItem queryItemWithName:kFIRInstanceIDTokenOptionsFirebaseAppIDKey
value:(NSString *)firebaseAppID];
NSURLQueryItem *item =
[NSURLQueryItem queryItemWithName:kFIRInstanceIDTokenOptionsFirebaseAppIDKey
value:(NSString *)firebaseAppID];
[queryItems addObject:item];
}

NSString *content = FIRInstanceIDQueryFromQueryItems(queryItems);
NSURLComponents *components = [[NSURLComponents alloc] init];
components.queryItems = queryItems;
NSString *content = components.query;
request.HTTPBody = [content dataUsingEncoding:NSUTF8StringEncoding];
FIRInstanceIDLoggerDebug(kFIRInstanceIDMessageCodeTokenFetchOperationFetchRequest,
@"Register request to %@ content: %@", FIRInstanceIDRegisterServer(),
Expand Down
7 changes: 2 additions & 5 deletions Firebase/InstanceID/FIRInstanceIDTokenOperation+Private.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@

#import "FIRInstanceIDUtilities.h"

@class FIRInstanceIDURLQueryItem;

NS_ASSUME_NONNULL_BEGIN

@interface FIRInstanceIDTokenOperation (Private)
Expand All @@ -42,10 +40,9 @@ NS_ASSUME_NONNULL_BEGIN
instanceID:(NSString *)instanceID;

#pragma mark - Request Construction
+ (NSMutableArray<FIRInstanceIDURLQueryItem *> *)standardQueryItemsWithDeviceID:(NSString *)deviceID
scope:(NSString *)scope;
+ (NSMutableArray<NSURLQueryItem *> *)standardQueryItemsWithDeviceID:(NSString *)deviceID
scope:(NSString *)scope;
- (NSMutableURLRequest *)tokenRequest;
- (NSArray<FIRInstanceIDURLQueryItem *> *)queryItemsWithInstanceID:(NSString *)instanceID;

#pragma mark - HTTP Headers
/**
Expand Down
31 changes: 11 additions & 20 deletions Firebase/InstanceID/FIRInstanceIDTokenOperation.m
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,11 @@

#import "FIRInstanceIDCheckinPreferences.h"
#import "FIRInstanceIDLogger.h"
#import "FIRInstanceIDURLQueryItem.h"
#import "FIRInstanceIDUtilities.h"
#import "NSError+FIRInstanceID.h"

static const NSInteger kFIRInstanceIDPlatformVersionIOS = 2;

static NSString *const kFIRInstanceIDParamInstanceID = @"appid";
// Scope parameter that defines the service using the token
static NSString *const kFIRInstanceIDParamScope = @"X-scope";
// Defines the SDK version
Expand Down Expand Up @@ -205,49 +203,42 @@ + (NSMutableURLRequest *)requestWithAuthHeader:(NSString *)authHeaderString
return request;
}

+ (NSMutableArray<FIRInstanceIDURLQueryItem *> *)standardQueryItemsWithDeviceID:(NSString *)deviceID
scope:(NSString *)scope {
NSMutableArray<FIRInstanceIDURLQueryItem *> *queryItems = [NSMutableArray arrayWithCapacity:8];
+ (NSMutableArray<NSURLQueryItem *> *)standardQueryItemsWithDeviceID:(NSString *)deviceID
scope:(NSString *)scope {
NSMutableArray<NSURLQueryItem *> *queryItems = [NSMutableArray arrayWithCapacity:8];

// E.g. X-osv=10.2.1
NSString *systemVersion = FIRInstanceIDOperatingSystemVersion();
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"X-osv" value:systemVersion]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"X-osv" value:systemVersion]];
// E.g. device=
if (deviceID) {
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"device" value:deviceID]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"device" value:deviceID]];
}
// E.g. X-scope=fcm
if (scope) {
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:kFIRInstanceIDParamScope
value:scope]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:kFIRInstanceIDParamScope value:scope]];
}
// E.g. plat=2
NSString *platform = [NSString stringWithFormat:@"%ld", (long)kFIRInstanceIDPlatformVersionIOS];
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"plat" value:platform]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"plat" value:platform]];
// E.g. app=com.myapp.foo
NSString *appIdentifier = FIRInstanceIDAppIdentifier();
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"app" value:appIdentifier]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"app" value:appIdentifier]];
// E.g. app_ver=1.5
NSString *appVersion = FIRInstanceIDCurrentAppVersion();
[queryItems addObject:[FIRInstanceIDURLQueryItem queryItemWithName:@"app_ver" value:appVersion]];
[queryItems addObject:[NSURLQueryItem queryItemWithName:@"app_ver" value:appVersion]];
// E.g. X-cliv=fiid-1.2.3
NSString *fcmLibraryVersion =
[NSString stringWithFormat:@"fiid-%@", FIRInstanceIDCurrentGCMVersion()];
if (fcmLibraryVersion.length) {
FIRInstanceIDURLQueryItem *gcmLibVersion =
[FIRInstanceIDURLQueryItem queryItemWithName:kFIRInstanceIDParamFCMLibVersion
value:fcmLibraryVersion];
NSURLQueryItem *gcmLibVersion =
[NSURLQueryItem queryItemWithName:kFIRInstanceIDParamFCMLibVersion value:fcmLibraryVersion];
[queryItems addObject:gcmLibVersion];
}

return queryItems;
}

- (NSArray<FIRInstanceIDURLQueryItem *> *)queryItemsWithInstanceID:(NSString *)instanceID {
return @[ [FIRInstanceIDURLQueryItem queryItemWithName:kFIRInstanceIDParamInstanceID
value:instanceID] ];
}

#pragma mark - HTTP Header

+ (NSString *)HTTPAuthHeaderFromCheckin:(FIRInstanceIDCheckinPreferences *)checkin {
Expand Down
39 changes: 0 additions & 39 deletions Firebase/InstanceID/FIRInstanceIDURLQueryItem.h

This file was deleted.

55 changes: 0 additions & 55 deletions Firebase/InstanceID/FIRInstanceIDURLQueryItem.m

This file was deleted.

3 changes: 3 additions & 0 deletions FirebaseMessaging/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# unreleased
- [changed] Remove logic that is executed for iOS 7 and below. (#5835)

# 2020-07 -- v4.6.0
- [fixed] Fix documentation warning exposed by Xcode 12. (#5876)
- [changed] Functionally neutral updated import references for dependencies. (#5824)
Expand Down
13 changes: 3 additions & 10 deletions FirebaseMessaging/Sources/FIRMessagingContextManagerService.m
Original file line number Diff line number Diff line change
Expand Up @@ -216,13 +216,9 @@ + (void)scheduleLocalNotificationForMessage:(NSDictionary *)message atDate:(NSDa
if ([apsDictionary[kFIRMessagingContextManagerBodyKey] length]) {
notification.alertBody = apsDictionary[kFIRMessagingContextManagerBodyKey];
}
if ([apsDictionary[kFIRMessagingContextManagerTitleKey] length]) {
// |alertTitle| is iOS 8.2+, so check if we can set it
if ([notification respondsToSelector:@selector(setAlertTitle:)]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wunguarded-availability"
if (@available(iOS 8.2, *)) {
if ([apsDictionary[kFIRMessagingContextManagerTitleKey] length]) {
notification.alertTitle = apsDictionary[kFIRMessagingContextManagerTitleKey];
#pragma clang diagnostic pop
}
}

Expand All @@ -234,10 +230,7 @@ + (void)scheduleLocalNotificationForMessage:(NSDictionary *)message atDate:(NSDa
[apsDictionary[kFIRMessagingContextManagerBadgeKey] integerValue];
}
if (apsDictionary[kFIRMessagingContextManagerCategoryKey]) {
// |category| is iOS 8.0+, so check if we can set it
if ([notification respondsToSelector:@selector(setCategory:)]) {
notification.category = apsDictionary[kFIRMessagingContextManagerCategoryKey];
}
notification.category = apsDictionary[kFIRMessagingContextManagerCategoryKey];
}

NSDictionary *userInfo = [self parseDataFromMessage:message];
Expand Down