# 2021-01 -- 7.4.0
- [changed] Added a check on whether the default token has been changed by Messaging before writing to the InstanceID keychain storage. (#7223)

# 2020-10 -- 7.0.0
- [changed] Deprecated private `-[FIRInstanceID appInstanceID:]` method was removed. (#4486)
- [fixed] Fixed an issue that APNS token is not sent in token request when there's a delay of getting the APNS token from Apple. (#6553)

# 2020-09 -- 4.7.0
- [deprecated] Deprecated InstanceID. For app instance identity handling, use FirebaseInstallations. For FCM registration token handling, use FirebaseMessaging. (#6585)

# 2020-08 -- 4.6.0
- [added] Added a new notification listening token refresh from Messaging and update the token cache in InstanceID. (#6286)
- [fixed] Fixed an issue that token refresh notification is not triggered when use `tokenWithAuthorizedEntity:scope:options:handler` to get token. (#6286)

# 2020-07 -- 4.5.1
- [changed] Remove FIRInstanceIDURLQueryItem in favor of NSURLQueryItem. (#5835)

# 2020-07 -- 4.5.0
- [changed] Functionally neutral updated import references for dependencies. (#5824)

# 2020-06 -- 4.4.0
- [changed] Standardize FirebaseCore import headers. (#5758)

# 2020-04 -- 4.3.4
- [changed] Internal cleanup and remove repetitive local notification. (#5339)

# 2020-03 -- 4.3.3
- [fixed] Fixed provisioning profile location for catalyst. (#5048)
- [fixed] Fixed crash when passing a nil handler to deleteToken request. (#5247)
- [changed] Remove obsolete logic to improve performance and reduce keychain operations. (#5211, #5237)

# 2020-02 -- 4.3.2
- [changed] Removed unused files (#4881).

# 2020-02 -- 4.3.1
- [changed] Stop collecting logging ID as it is not used anymore.(#4444)

# 2020-01 -- 4.3.0
- [added] Added watchOS support for InstanceID (#4016)
- [added] Added a new dependency on the [Firebase Installations SDK](../../FirebaseInstallations/CHANGELOG.md). The Firebase Installations SDK introduces the [Firebase Installations API](https://console.cloud.google.com/apis/library/firebaseinstallations.googleapis.com). Developers that use API-restrictions for their API-Keys may experience blocked requests (https://stackoverflow.com/questions/58495985/). A solution is available [here](../../FirebaseInstallations/API_KEY_RESTRICTIONS.md). (#4533)

# 2019-12 -- 4.2.8
- [changed] Added heartbeat support for InstanceID (#4323)
- [fixed] Fixed the documentations on a few random generation and hash methods to clarify its use case to avoid confusions. (#4469, #4444, #4326)

# 2019-11-05 -- 4.2.7
- [fixed] Fixed a crash in `checkTokenRefreshPolicyWithIID:` and ensure `tokenWithAuthorizedEntity:scope:options:handler` method is refreshing token if token is not freshed any more. (#4167)
- [changed] Updated deprecated keychain access level. (#4172)

# 2019-10-22 -- 4.2.6
- [fixed] Fixed InstanceID initialization timing issue (#4030).
- [changed] Added check to see if token and IID are inconsistent (#4025).
- [changed] Removed migration logic from document folder to application folder (#4033).

# 2019-10-08 -- 4.2.5
- [fixed] Fixed private header imports (#3796).

# 2019-09-23 -- 4.2.4
- [changed] Moved two headers from internal to private for Remote Config open sourcing (#3621).

# 2019-08-20 -- 4.2.3
- [fixed] Fixed a crash that could occur if InstanceID was shut down when fetching a new instance ID (#3439).

# 2019-07-12 -- 4.2.2
- [changed] Removed a call to a deprecated logging method (#3333).

# 2019-07-09 -- 4.2.1
- [fixed] Fixed an issue where fetching an instance ID wouldn't invoke the callback handler if the instance ID had not changed. (#3229)

# 2019-06-18 -- 4.2.0
- [added] Added macOS support for InstanceID (#2880)
- [fixed] Corrected timezone proto key (#3132)

# 2019-06-04 -- 4.1.1
- [fixed] Fixed a crash in token fetching. Removed debug assertion that is only for develop build. (#3018)

# 2019-05-21 -- 4.1.0
- [fixed] Fixed a race condition where checkin was deleted before writing during app start, causing notifications to not be delivered correctly. (#2438)
- [fixed] Fixed a keychain migration crash. (#2731)
- [changed] Remove reflection call to get checkin info from Firebase Messaging. (#2825)

# 2019-05-07 -- 4.0.0
- [removed] Remove deprecated `token` method. Use `instanceIDWithHandler:` instead. (#2741)
- [changed] Send `firebaseUserAgent` with a register request (#2679)

# 2019-04-02 -- v3.8.1
- [fixed] Fixed handling the multiple calls of instanceIDWithHandler. (#2445)
- [fixed] Fixed a race condition where token kept getting refreshed at app start. (#2438)

# 2019-03-19 -- v3.8.0
- [added] Adding community support for tvOS. (#2428)
- [added] Adding Firebase info to checkin. (#2509)
- [fixed] Fixed a crash in FIRInstanceIDCheckinService. (#2548)

# 2019-03-05 -- v3.7.0
- [feature] Open source Firebase InstanceID. (#186)

# 2019-02-20 -- v3.5.0
- [changed] Always update keychain access control when adding new keychain to ensure it won't be blocked when device is locked. (#1399)

# 2019-01-22 -- v3.4.0
- [changed] Move all keychain write operations off the main thread. (#1399)
- [changed] Make keychain operations asynchronous where possible (given the current APIs)
- [changed] Avoid redundant keychain operations when it's been queried and cached before.

# 2018-10-25 -- v3.3.0
- [fixed] Fixed a crash caused by keychain operation when accessing default access group. (#1399, #1393)
- [changed] Remove internal APIs that are no longer used.

# 2018-09-25 -- v3.2.2
- [fixed] Fixed a crash caused by NSUserDefaults being called on background thread.

# 2018-08-14 -- v3.2.1
- [fixed] Fixed an issue that checkin is not cached properly when app first started. (#1561)

# 2018-07-31 -- v3.2.0
- [added] Added support for global Firebase data collection flag. (#1219)
- [changed] Improved message tracking sent by server API.
- [fixed] Fixed an issue that InstanceID doesn't compile in app extensions, allowing its
dependents like remote config to be working inside the app extensions.

# 2018-06-19 -- v3.1.1
- [fixed] Ensure the checkin and tokens are refreshed if firebase project changed.
- [fixed] Fixed an issue that checkin should be turned off when FCM's autoInitEnabled flag is off.

# 2018-06-12 -- v3.1.0
- [added] Added a new API to fetch InstanceID and Token with a completion handler. The completion handler returns a FIRInstanceIDResult with a instanceID and a token properties.
- [deprecated] Deprecated the token method.
- [added] Added support to log a new customized label provided by developer.

# 2018-05-08 -- v3.0.0
- [removed] Removed deprecated method `setAPNSToken:type` defined in FIRInstanceID, please use `setAPNSToken:type` defined in FIRMessaging instead.
- [removed] Removed deprecated enum `FIRInstanceIDAPNSTokenType` defined in FIRInstanceID, please use `FIRMessagingAPNSTokenType` defined in FIRMessaging instead.
- [fixed] Fixed an issue that FCM scheduled messages were not tracked successfully.

# 2018-03-06 -- v2.0.10
- [changed] Improved documentation on InstanceID usage for GDPR.
- [fixed] Improved the keypair handling during GCM to FCM migration. If you are migrating from GCM to FCM, we encourage you to update to this version and above.

# 2018-02-06 -- v2.0.9
- [fixed] Improved support for language targeting for FCM service. Server updates happen more efficiently when language changes.
- [fixed] Improved support for FCM token auto generation enable/disable functions.

# 2017-12-11 -- v2.0.8
- [fixed] Fixed a crash caused by a reflection call during logging.
- [changed] Updating server with the latest parameters and deprecating old ones.

# 2017-11-27 -- v2.0.7
- [fixed] Improve identity reset process, ensuring all information is reset during Identity deletion.

# 2017-11-06 -- v2.0.6
- [changed] Make token refresh weekly.
- [fixed] Fixed a crash when performing token operation.

# 2017-10-11 -- v2.0.5
- [added] Improved support for working in shared Keychain environments.

# 2017-09-26 -- v2.0.4
- [fixed] Fixed an issue where the FCM token was not associating correctly with an APNs
  device token, depending on when the APNs device token was made available.
- [fixed] Fixed an issue where FCM tokens for different Sender IDs were not associating
  correctly with an APNs device token.
- [fixed] Fixed an issue that was preventing the FCM direct channel from being
  established on the first start after 24 hours of being opened.

# 2017-09-13 -- v2.0.3
- [fixed] Fixed a race condition where a token was not being generated on first start,
  if Firebase Messaging was included and the app did not register for remote
  notifications.

# 2017-08-25 -- v2.0.2
- [fixed] Fixed a startup performance regression, removing a call which was blocking the
  main thread.

# 2017-08-07 -- v2.0.1
- [fixed] Fixed issues with token and app identifier being inaccessible when the device
  is locked.
- [fixed] Fixed a crash if bundle identifier is nil, which is possible in some testing
  environments.
- [fixed] Fixed a small memory leak fetching a new token.
- [changed] Moved to a new and simplified token storage system.
- [changed] Moved to a new queuing system for token fetches and deletes.
- [changed] Simplified logic and code around configuration and logging.
- [changed] Added clarification about the 'apns_sandbox' parameter, in header comments.

# 2017-05-08 -- v2.0.0
- [added] Introduced an improved interface for Swift 3 developers
- [deprecated] Deprecated some methods and properties after moving their logic to the
  Firebase Cloud Messaging SDK
- [fixed] Fixed an intermittent stability issue when a debug build of an app was
  replaced with a release build of the same version
- [fixed] Removed swizzling logic that was sometimes resulting in developers receiving
  a validation notice about enabling push notification capabilities, even though
  they weren't using push notifications
- [fixed] Fixed a notification that would sometimes fire twice in quick succession
  during the first run of an app

# 2017-03-31 -- v1.0.10

- [changed] Improvements to token-fetching logic
- [fixed] Fixed some warnings in Instance ID
- [fixed] Improved error messages if Instance ID couldn't be initialized properly
- [fixed] Improvements to console logging

# 2017-01-31 -- v1.0.9

- [fixed] Removed an error being mistakenly logged to the console.

# 2016-07-06 -- v1.0.8

- [changed] Don't store InstanceID plists in Documents folder.

# 2016-06-19 -- v1.0.7

- [fixed] Fix remote-notifications warning on app submission.

# 2016-05-16 -- v1.0.6

- [fixed] Fix CocoaPod linter issues for InstanceID pod.

# 2016-05-13 -- v1.0.5

- [fixed] Fix Authorization errors for InstanceID tokens.

# 2016-05-11 -- v1.0.4

- [changed] Reduce wait for InstanceID token during parallel requests.

# 2016-04-18 -- v1.0.3

- [changed] Change flag to disable swizzling to *FirebaseAppDelegateProxyEnabled*.
- [fixed] Fix incessant Keychain errors while accessing InstanceID.
- [fixed] Fix max retries for fetching IID token.

# 2016-04-18 -- v1.0.2

- [changed] Register for remote notifications on iOS8+ in the SDK itself.
