Change Log

All notable changes to this project will be documented in this file. MimiSDK adheres to Semantic Versioning.

10.X Releases

9.X Releases

8.X Releases

7.X Releases

6.X Releases

5.X Releases

4.X Releases

3.X Releases

2.X Releases


10.1.0

Released on 2024-04-11

Added

  • submitAudiogram(leftEar:rightEar:metadata:result:) to MimiTestController
  • init(dataPoints:) to MimiTestAudiogram
  • MimiTestAudiogramMetadata to MimiCoreKit
  • MimiSubmitAudiogramResponse to MimiCoreKit
  • init(anonymousId:...) to MimiUser
  • init() to MimiCoreObservable
  • init(id: String...) to MimiTestResult
  • init(ptt:mt:) to MimiTestResults
  • init(ear:...) to MimiMTTestRunResultData
  • init(ear:...) to MimiPTTTestRunResultData

Fixed

  • Issue where presenting test results takes too long.
  • Issue where personalization was disabled after resetting the account and submitting another test.

10.0.1

Released on 2024-02-27

Added

Changed

  • dataSource type to AnyMimiProcessingParameterDataSource in MimiProcessingParameter

Fixed

  • Issue where a missing Swift language feature could result in a crash on iOS 15.

10.0.0

Released on 2024-02-13

Added

  • uiControlDebounceBehavior in MimiPersonalizationConfiguration
  • parameterDataSourceUndefined in MimiProcessingError
  • synchronizeApplicators() in MimiProcessingParameter
  • Localization support for Ukrainian (Ukraine)
  • updateState in MimiProcessingParameter
  • ParameterUpdateState in MimiProcessingParameter
  • bundlePublisher in MimiUpDownPresetParameterDataSource
  • bundle in MimiUpDownPresetParameterDataSource
  • session in MimiProcessingController
  • MimiProcessingConfiguration in MimiCoreKit
  • MimiProcessingParameterDataSource in MimiCoreKit
  • dataSource in MimiProcessingParameter

Changed

  • Minimum deployment target to 15.0, dropping support for iOS 14.
  • primaryTint, tertiaryTint, primaryForeground, secondaryForeground, primaryText, secondaryText and hearingTestButtonText to MimiHighlightableColor in MimiColorBook
  • MimiDefaultPresetParameterDataSource to MimiSinglePresetParameterDataSource
  • session to sessionPublisher in MimiProcessingController
  • value to valuePublisher in MimiProcessingParameter
  • isInterrupted to isInterruptedPublisher in MimiProcessingSession
  • activate(presetDataSource:) to activate(configuration:) in MimiProcessingController

Removed

  • canApply in MimiProcessingParameterApplicator
  • deliveryMode in MimiProcessingParameter
  • applicator(synchronizing value:) from MimiProcessingParameter
  • MimiRemoteProcessingParameter
  • compactAction in MimiFontBook
  • compactBody in MimiFontBook
  • compactBodyHighlight in MimiFontBook
  • captionHighlight in MimiFontBook
  • MimiCompactTextButton in MimiUXKit
  • MimiCompactActionButton in MimiUXKit
  • compactAction in MimiLabel
  • compactBody in MimiLabel
  • HighlightStyle, highlightStyle, highlightColor & cgColor in MimiColor
  • init(red:green:blue:alpha:), init(cgColor:) & init(white:, alpha:) in MimiColor
  • withHighlightStyle(_:), withHighlightColor(_:) & color(for state:) in MimiColor
  • mimi in UIColor
  • Color in MimiColorBook
  • init(_ colors: Color...) in MimiColorBook
  • sessionInterruptionInProgress in MimiProcessingError
  • MimiPresetParameterDataSource in MimiCoreKit
  • presetDataSource in MimiProcessingSession
  • launchAccountPortal in MimiAuthController

9.2.0

Released on 2023-12-11

This release contains an update for our Pure Tone test, reducing the length of the test by around 30 seconds per ear.

Fixed

  • Issue where the setting of the volume to 50% wouldn’t work in an edge case scenario.
  • Issue where MimiTestFlow would freeze on certain App lifecycle events.

Changed

  • PTT test type to PTT 6oct

9.1.0

Released on 2023-11-10

Added

  • loadUserAccountPortalURL in MimiAuthController
  • MimiHighlightableColor in MimiUXKit
  • init(primaryTint:secondaryTint:...earLeft:earRight:) in MimiColorBook

Deprecated

  • launchAccountPortal in MimiAuthController
  • highlightStyle, highlightColor & cgColor in MimiColor
  • init(red:green:blue:alpha:), init(cgColor:) & init(white:, alpha:) in MimiColor
  • withHighlightStyle(_:), withHighlightColor(_:) & color(for state:) in MimiColor
  • mimi in UIColor
  • Color in MimiColorBook
  • init(_ colors: Color...) in MimiColorBook

9.0.2

Released on 2023-11-08

Fixed

  • Issue with an incorrect Chinese (Simplified) localized string.

9.0.1

Released on 2023-10-26

Changed

  • Updated documentation on SDK v8 releases

9.0.0

Released on 2023-10-23

This release introduces the support of storing data on Chinese infrastructure due to PIPL requirements. Depending on the geo-location the user’s data (hearing assessment, profile data) will dynamically be stored on Chinese Server Infrastructure or on European Server Infrastructure.

Additionally smaller bugs have been fixed.

Added

  • MSDK 9.0.0 introduces automatic support for region-based storage of user Mimi data.
    • By default, there is no change for users or where their data is stored.
      • When using or upgrading to MSDK 9.0.0, no data migration is automatically performed.
      • Only after individual agreement and in co-ordination with a partner, will their users’ Mimi data be stored in the appropriate regulatory region for each user.
      • At the time of writing this includes:
        • Rest of World (RoW)
        • China

      Note

      Note that the Mimi Account Portal, available to users signed up with Mimi, does not currently support region-based data storage.

Deprecated

  • compactBody in MimiFontBook
  • compactAction in MimiFontBook

Removed

  • Removed the Bluetooth Troubleshooting dialog from the Testflow.
    • Both Bluetooth and wired headphones are now shown the same disconnection interruption dialog.

Fixed

  • Issue where a user with only a hearing test (without a year of birth) would not get past the onboarding step in the Profile upon login.

8.2.0

Released on 2023-09-28

In this release, we’ve identified an issue where a user with only a hearing test (without a year of birth) would not get past the onboarding step in the Profile upon login. Since there are no breaking public API changes in SDK v9, we strongly recommend updating to SDK v9.x.x where this issue has been resolved.

This release includes major copy improvements, adds more MSDK UI theming options, and some bug fixes.

Added

  • Localization support for English (United Kingdom), Korean, Polish & Dutch languages.

8.1.0

Released on 2023-08-16

In this release, we’ve identified an issue where a user with only a hearing test (without a year of birth) would not get past the onboarding step in the Profile upon login. Since there are no breaking public API changes in SDK v9, we strongly recommend updating to SDK v9.x.x where this issue has been resolved.

Added

  • cancel in MimiAlertAction.Style

8.0.0

Released on 2023-07-17

In this release, we’ve identified an issue where a user with only a hearing test (without a year of birth) would not get past the onboarding step in the Profile upon login. Since there are no breaking public API changes in SDK v9, we strongly recommend updating to SDK v9.x.x where this issue has been resolved.

Added

  • success in MimiColorBook.
  • earLeft in MimiColorBook.
  • earRight in MimiColorBook.
  • requiresFullWidth in MimiUserFlowStep.
  • accessibilityId in MimiAlert and MimiAlertAction.
  • MimiHeadphoneIdentifier in MimiCoreKit.
  • MimiConnectedHeadphoneProvider in MimiCoreKit.
  • connectedHeadphoneProvider in MimiTestController.
  • fieldAccessibilityIdentifier in MimiValidatingTextField.
  • messageAccessibilityIdentifier in MimiValidatingTextField.
  • textAccessibilityIdentifier in MimiNavigationStepHeaderView.
  • MimiFooterActionButton in MimiUXKit.
  • MimiTestTypeConfiguration in MimiCoreKit.
  • loadTestTypeConfiguration(headphoneIdentifier:result:) in MimiTestController.
  • .init() in MimiBirthYearPickerView.
  • MimiTestResults in MimiTestFlow.didSubmitTestNotification.
  • unsupportedTestType in MimiTestFlowError.
  • Localization support for Slovenian, Croatian, Serbian(Latin), Serbian(Cyrillic) & Bosnian languages.

Changed

  • Minimum deployment target to 14.0, dropping support for iOS 13.
  • Updated MimiAmbientLoudnessRating.quiet color to success.
  • Updated MimiNavigationBar background color to secondaryBackground.
  • Updated MimiNavigationBar tint color to primaryTint.
  • MimiTestFlow.build() is now an asynchronous function.
  • Renamed MimiTestHeadphoneInfo to MimiTestHeadphoneMetadata.
  • Renamed MimiHeadphones to MimiHeadphone.

Removed

  • includeDefaultThemes in MimiThemeKit.
  • MimiBrandTheme in MimiUXKit.
  • mimiBrand in MimiFontBook.
  • Support for Arabic language.
  • Setting accessibility identifier for MimiValidatingTextField.
  • MimiPersonalizationVisualizationViewController in MimiTestKit.
  • MimiDisclaimerBulletin in MimiTestKit.
  • loadVisualization() in MimiPersonalizationController.
  • .init(yearOfBirth:) in MimiBirthYearPickerView.
  • .init(frame:) in MimiBirthYearPickerView.
  • MimiPersonalizationBarChartView in MimiTestKit.
  • MimiResultConditionsBulletinDelegate in MimiTestKit.
  • MimiResultConditionsBulletin in MimiTestKit.
  • MimiResultCondition in MimiTestKit.
  • MimiResultConditionsData in MimiTestKit.
  • preferredTest parameter in MimiTestFlow.build(preferredTest:).
  • MimiRemoteConfiguration in MimiCoreKit
  • MimiConfigurationController in MimiCoreKit
  • connected in MimiTestHeadphoneInfo
  • ConnectionType in MimiTestHeadphoneInfo

7.4.0

Released on 2023-05-15

Added

  • loadVisualization(result:) to MimiPersonalizationController.
  • onDismiss to MimiPersonalizationVisualizationViewController.

Updated

  • Deprecated MimiPersonalizationVisualizationViewController in MimiTestKit.
  • Deprecated MimiDisclaimerBulletin in MimiTestKit.
  • Deprecated loadVisualization() in MimiPersonalizationController.

Removed

  • Results step from MimiTestFlow.

7.3.1

Released on 2023-02-09

Fixed

  • Issue with theming in MimiBulletinViewController
  • Issue with French & Portuguese localizations

7.3.0

Released on 2023-01-27

Added

  • Localizations for Portuguese, Chinese (Traditional, Hong Kong S.A.R.), Chinese (Traditional, Taiwan), Italian & Arabic languages.
  • uppercaseTransformation in MimiStyleBook
  • textAlignment in MimiStyleBook
  • hearingTestButtonBackground in MimiColorBook
  • hearingTestButtonText in MimiColorBook
  • soundPersonalizationIcon in MimiColorBook
  • personalization in MimiProfileConfiguration
  • MimiViewController to MimiUXKit
  • MimiUserFlowNavigationItemable to MimiUXKit

Changed

  • MimiUserFlowSteppable.navigationItem is of type MimiUserFlowNavigationItemable

7.2.0

Released on 2022-12-16

Changed

  • Improved analytics for Mimi Processing.

7.1.0

Released on 2022-12-02

Added

Fixed

  • Issue where the sample sound on the profile would not stop playing when opening another screen.

7.0.0

Released on 2022-11-03

Added

  • anonymousId in MimiUser.
  • allowsAnonymousUserOnly in MimiProfileConfiguration.
  • logInAnonymously(anonymousId: String) in MimiAuthRoute.

Fixed

  • Issue where the Sound Personalization bar chart would not be presented correctly at the end of a hearing test.
  • Issue where a string on the Profile was missing translations.
  • Issue where the Personalization bar chart wasn’t rendered correctly in certain localizations.

Removed

  • user(MimiUser) in MimiAuthRoute.
  • default from MimiProfileConfiguration.
  • activate(fitting:) in MimiProcessingController.
  • fitting in MimiProcessingSession.
  • MimiPersonalization.Metadata in MimiCoreKit.
  • metadata in MimiPersonalization.
  • MimiPersonalization.Mode in MimiCoreKit.
  • MimiProcessingIntensitySlider in MimiSDK.
  • MimiProcessingToggle in MimiSDK.
  • MimiResultsViewController in MimiTestKit.

6.2.2

Released on 2022-10-14

Fixed

  • Issue where sample audio would continue to play after profile view dismissal.
  • Issue where the fine tuning & sound personalization cards on profile would display outdated information.
  • Issue where the fine tuning & sound personalization cards on profile would be displayed even if personalization was unavailable.

6.2.1

Released on 2022-10-04

Fixed

  • Issue which caused duplication of cards on the profile.
  • Image on the Sound Personalization card on the profile.
  • Issue with an incorrect translation of a French localized string.
  • Issue where the sample sound on the profile would not loop indefinitely.

6.2.0

Released on 2022-09-22

Added

  • MimiPresetParameterDataSource in MimiCoreKit.
  • MimiDefaultPresetParameterDataSource in MimiCoreKit.
  • MimiUpDownPresetParameterDataSource in MimiCoreKit.
  • activate(presetDataSource:) in MimiProcessingController.
  • apply(value:) to MimiRemoteProcessingParameter.
  • presetDataSource to MimiProcessingSession.
  • MimiPersonalization.UpDownPresetBundle in MimiCoreKit.

Deprecated

  • activate(fitting:) in MimiProcessingController.
  • fitting in MimiProcessingSession.
  • MimiPersonalization.Metadata in MimiCoreKit.
  • metadata in MimiPersonalization.
  • MimiPersonalization.Mode in MimiCoreKit.
  • MimiProcessingIntensitySlider in MimiSDK.
  • MimiProcessingToggle in MimiSDK.

6.1.0

Released on 2022-07-14

Added

  • personalization to MimiCore.
  • MimiPersonalizationController to MimiCoreKit.
  • MimiPersonalizationVisualizationViewController to MimiTestKit.
  • MimiPersonalizationBarChartView to MimiTestKit.

Deprecated


6.0.0

Released on 2022-05-05

Updated

  • SigningError has been removed from MimiCoreError.
  • signature has been removed from MimiTestResult.
  • MimiTest(runs: [MimiTestRun], metadata: MimiTestMetadata, signature: String?) is now MimiTest(runs: [MimiTestRun], metadata: MimiTestMetadata).
  • usesMimiBrandedHealthOnboarding and showsHearingHealthTips have been removed from MimiProfileConfiguration.
  • Removed showsHearingHealthTips parameter from init(allowsRemoteDeviceAuthorization:) in MimiProfileConfiguration.
  • Removed options parameter from build(preferredTest:) in MimiTestFlow.
  • Removed showsHearingHealthTips parameter from initializer in MimiResultsViewController.
  • Removed MimiPersonalizationRoute.
  • message is now optional on MimiCoreErrorDetails.
  • Removed export(testResult:with:result) from MimiTestController.
  • Removed tintColor from MimiTestEar.
  • Removed Context from MimiHearingGrade.
  • Removed description(context:short:) from MimiHearingGrade.
  • Removed detailedDescription(context:short:) from MimiHearingGrade.
  • Removed tintColor(for:) from MimiHearingGrade.
  • Removed MimiHearingGradeSpectrumView.
  • Removed MimiEarIndicatorView.
  • Removed description from MimiHearingSymmetry.
  • Removed text and textAlignment from MimiSnackbar.
  • Removed environment and Environment from MimiCore.

Fixed

  • Issue where arm64 simulator binaries were missing in the SDK xcframeworks.
  • Issue where embedded static libraries could lead to an invalid bundle structure.

5.1.1

Released on 2022-05-17

Fixed

  • Issue where arm64 simulator binaries were missing in the SDK xcframeworks.
  • Issue where embedded static libraries could lead to an invalid bundle structure.

5.1.0 (Invalid)

Released on 2022-04-14. This release is invalid as it causes integration issues. Please use the hotfix version 5.1.1.

Added

  • leadingText & trailingText to MimiSnackbarDefaultContentView.
  • leadingTextAlignment & trailingTextAlignment to MimiSnackbarDefaultContentView.
  • Support for building for the iPhone Simulator platform on Apple Silicon machines.
  • usesMimiBrandedHealthOnboarding to MimiProfileConfiguration.

Updated

  • Improved soft inactivity, hard inactivity & pause interruptions in MimiTestFlow.
  • Deprecated text & textAlignment in MimiSnackbarDefaultContentView.

Fixed

  • Issue where an incorrect interruption caused by a system interruption would be displayed in MimiTestFlow.
  • Issue where a crash would occur when soft inactivity banner was displayed on iPads.
  • Issue where the volume change interruption message would not be displayed consistently.
  • Issue where the pause interruption message would be displayed when the app came to the foreground during a test.

5.0.0

Released on 2022-01-27

Added

  • configuration: MimiProfileConfiguration parameter to MimiProfileViewController().
  • configuration: MimiProfileConfiguration parameter to MimiProfileNavigationController().
  • configuration: MimiProfileConfiguration parameter to MimiProfileLauncherView().
  • Ability to view information about calibration to PTT test in MimiTestFlow.
  • history & clearHistory to MimiLogger.

Updated

  • Minimum deployment target to 13.0, dropping support for iOS 12.
  • Renamed MimiHTE.xcframework to MimiHTEKit.xcframework.
  • Improved Japanese translations.
  • MimiTestResult now conforms to Identifiable.
  • MimiPersonalizationController has been removed from MimiCore.
  • MimiUserController has been removed from MimiCore.
  • MimiPersonalization.FittingInfo has been renamed to MimiPersonalization.Fitting.
  • MimiPersonalization.FittingInfo.for() has been renamed to MimiPersonalization.Fitting.techLevel().
  • MimiAuthFlow.Route.anonymously has been removed.
  • MimiComponent.hasConstructed has been removed.
  • Mimi.profileContext has been removed.
  • MimiProfileContext has been removed.
  • Mimi.configuration has been removed.
  • Mimi.start(credentials:configuration:delegate) is now Mimi.start(credentials:delegate).
  • MimiConfiguration has been removed.
  • MimiTabBar has been removed.
  • MimiTransparentNavigationBar has been removed.
  • MimiResultDetailsViewController has been removed.
  • MimiMTResultDetailsViewController has been removed.
  • MimiPTTResultDetailsViewController has been removed.
  • MimiTestRunResultData.signature has been removed.
  • MimiMTTestRunResultData.signature has been removed.
  • MimiPTTTestRunResultData.signature has been removed.
  • MimiTestController.tests has been removed.
  • MimiTest.LegacyInsights has been removed.
  • MimiTestRun.LegacyInsights has been removed.
  • MimiTestRun.results has been removed.
  • MimiTestLegacyInsights and conforming type MimiMTTestLegacyInsights have been removed.
  • MimiTestLegacyInsightsCategory has been removed.
  • Removed loadAll(result:), load(with:result:), submit(test:result:) & delete(test:result:) from MimiTestController.
  • Removed loadLegacyInsights(type:test:result:) from MimiTestController.
  • Removed provideResults parameter in MimiTestController.submit(test:provideResults:result:).
  • result handler now provides an MimiTestResults instance in MimiTestController.submit(test:provideResults:result:).
  • Removed testController(controller: didSubmit test:) from MimiTestControllerObservable.
  • Removed testController(controller: didLoad tests:) from MimiTestControllerObservable.
  • Removed testController(controller: didDelete test:) from MimiTestControllerObservable.
  • Removed init(results:noiseData:metadata:) from MimiTestRun.
  • Removed id, signature, runs, metadata, results & testType properties from MimiTest.
  • Removed id, metadata, testType, ear, timestamp, data & noiseData properties from MimiTestRun.
  • MimiTestRun.Metadata has been removed.
  • MimiHearingGrade.average(from:) has been removed.
  • hearingGrade is now optional on MimiTestRunResultData.
  • hearingGrade is now optional on MimiMTTestRunResultData.
  • hearingGrade is now optional on MimiPTTTestRunResultData.
  • hearingPercentage is now optional on MimiTestRunResultData.
  • hearingPercentage is now optional on MimiPTTTestRunResultData.
  • dbHearingLoss is now optional on MimiPTTTestRunResultData.
  • audiogram is now optional on MimiPTTTestRunResultData.
  • MimiTestResultError.PTT.visualizationMissingFrequency has been renamed to MimiTestResultError.PTT.visualizationMissingFrequencies.
  • MimiResultsViewController.latestResult has been removed.
  • MimiTestConditionsBulletinDelegate has been renamed to MimiResultConditionsBulletinDelegate.
  • MimiTestConditionsBulletin has been renamed to MimiResultConditionsBulletin.
  • MimiTestConditionsData has been renamed to MimiResultConditionsData.
  • MimiTestCondition has been renamed to MimiResultCondition.
  • MimiColor, MimiColorBook, MimiFont, MimiFontBook & MimiStyleBook now conform to Equatable.
  • theme is now non-optional on MimiThemeable.
  • apply(theme:) now has a non-optional MimiThemeDefinition on MimiThemeable.
  • MimiHearingGrade.tintColor has been removed.
  • tintColor(for:) now has a non-optional MimiThemeDefinition on MimiHearingGrade.
  • becomeThemingResponder(:) & resignThemingResponder(:) have been replaced with the ignoresThemeUpdates property in MimiThemable.
  • Replaced MimiFont(named:size:lineSpacing:kern:) with MimiFont(name:size:lineSpacing:kern:).
  • Removed environment parameter support from start(environment:credentials:delegate:) in MimiCore.
  • Removed environment parameter support from update(environment:credentials:) in MimiCore.
  • MimiEllipsisIndicator has been removed.
  • MimiTestAudiogram.DataPoint.frequency is now an Int type.
  • MimiAuthFlow.for(route:) has been removed.
  • MimiHearingGradeBorderedAvatarView.contentInset has been removed.
  • UITraitCollection.mimiHorizontalLayoutClass has been removed.
  • UITraitCollection.mimiVerticalLayoutClass has been removed.
  • MimiUserFlow.start(at:) has been removed.
  • MimiUserFlow.then(step:) has been removed.
  • MimiUserFlow.then(step:if:) has been removed.
  • MimiUserFlow.then(step:or:decision) has been removed.
  • MimiUserFlowCoordinatorError.invalidCurrentInde has been removed.
  • MimiTestFlow.TestType has been removed.
  • MimiTestFlow.for(test:) has been removed.

Fixed

  • Issue where navigation bars would render incorrectly on iOS 15.
  • Issue where the Profile header wouldn’t display correctly in case of an unknown hearing grade.
  • Issue where loading of a results page could fail in MimiResultsViewController.
  • Issue where deletion of a test result could fail in MimiResultsViewController.
  • Issue where test condition notification data could re-appear after clearing in MimiProfileViewController.
  • Issue where analytics properties could be missing in MimiTestFlow.
  • Issue where MimiTestFlow could crash when loading headphones list on iOS 15.

4.13.0

Released on 2021-12-17

Updated

  • MimiFontBook.mimiBrand uses new improved fonts.
  • MimiBrandTheme.default has been renamed to MimiBrandTheme.light.
  • Minor appearance tweaks and improvements.

4.12.2

Released on 2021-11-01.

Fixed

  • Issue where MimiCore would not allow background access to the active authentication session.

4.12.1

Released on 2021-06-08.

Fixed

  • Issue where masker level was incorrect during the MT flow in MimiTestFlow.

4.12.0

Released on 2021-05-21.

Added

  • Step that prompts a user to configure their device before taking the test to MimiTestFlow.
  • Support for displaying client information in MimiResultsViewController.
  • name to MimiTestMetadata.Client.
  • metadata to AnyMimiTestResult.
  • hearingSymmetry to AnyMimiTestResult.

Updated

  • Test selection screen in MimiTestFlow now orders test paradigms based on the remote configuration.
  • A user will now be able to choose the type of test to take when onboarding (if available).
  • Improved layout of calibrated headphones in MimiTestFlow.

Fixed

  • Issue where action buttons could display incorrectly in MimiResultDetailsViewController.
  • Issue where action buttons could display incorrectly when viewing results in MimiTestFlow.

4.11.1

Released on 2021-05-07

Fixed

  • Issue where some analytics events could fail to track in MimiCore.

4.11.0

Released on 2021-05-03

Added

  • Support for displaying Personalization results to MimiTestFlow and MimiProfileViewController.
  • Ability to view hearing symmetry when viewing results in MimiResultsViewController.
  • Support for displaying unknown hearing grades to MimiResultDetailsViewController.
  • Support for displaying unknown hearing grades to MimiProfileViewController.
  • MimiHearingSymmetry enum to depict the symmetry of a user’s hearing ability.
  • hearingSymmetry to MimiTestResult.
  • .visualizationOutOfCalibratedLimits error to MimiTestResultError.PTT.
  • tintColor(for:) to MimiHearingGrade.
  • signature to MimiTestResult.
  • MimiTestResult.Signature type containing result signature data.
  • .check to MimiIconBook.

Updated

  • Improved plotting of audiogram in MimiResultDetailsViewController.
  • Deprecated tintColor in MimiHearingGrade.
  • Deprecated signature in MimiTestRunResultData.
  • Deprecated average(from:) in MimiHearingGrade.
  • Deprecated contentInset in MimiHearingGradeBorderedAvatarView.

Fixed


4.10.0

Released on 2021-04-08

Added

  • Ability to disable usage data collection via Mimi.allowsUsageDataCollection.

Updated

  • Improved animations in MimiResultsViewController.

Fixed

  • Issue where remote configuration could potentially be in an incorrect state.
  • Issue where MimiNavigationStepFooterView could fail to react correctly to keyboard events.

4.9.1

Released on 2021-03-09.

Fixed

  • Issue where binaries embedding the SDK would fail to validate on App Store Connect.

4.9.0

Released on 2021-02-25

Added

  • Ability to view all test results that a user has taken via MimiResultsViewController in MimiTestKit.
  • Ability to load historic test results to MimiTestController via loadResults(type: result:).
  • MimiCorePagedResult which represents a paged result of an API call to MimiCoreKit.
  • isShimmering to UIView in MimiUXKit.
  • Mimi.version to provide current MimiSDK version number.
  • MimiCore.version to provide current MimiCoreKit version number.
  • Added delete(testResult: result:) to MimiTestController.
  • .cross to MimiIconBook.
  • MimiResultDetailsViewController for viewing individual test result details to MimiTestKit.

Updated

  • Minor appearance tweaks and improvements.
  • Protocols now conform to AnyObject rather than class where required.
  • MimiHearingGradeAvatarView.Avatar now conforms to Equatable.
  • Deprecated MimiMTResultDetailsViewController in MimiTestKit.
  • Deprecated MimiPTTResultDetailsViewController in MimiTestKit.

Fixed

  • Issue where an audiogram could fail to render correctly.
  • Issue where delimiter characters would be visible when consenting to terms / privacy policy within MimiAuthFlow.
  • Issue where MimiActivityIndicator would not animate correctly following removal from the view hierarchy.

4.8.0

Released on 2020-11-30

Added

  • rootViewController to MimiUserFlow.
  • step() to MimiUserFlow.
  • step(if:) to MimiUserFlow.
  • step(or: decision:) to MimiUserFlow.
  • MimiDisclaimerBulletin to MimiTestKit.
  • UITraitCollection.mimiLayoutClass to give a unified layout classification for the current screen and device.

Updated

  • Minor improvements and appearance tweaks.
  • Improved layouts when using devices with Display Zoom enabled.
  • Improved card button layout on smaller devices in MimiProfileViewController.
  • Improved layout of MimiProfileLauncherView when running on smaller devices.
  • Improved UI for Privacy Policy & Terms of Use consent in MimiAuthFlow Sign Up flow.
  • Improved handling of whitespace characters within email fields in MimiAuthFlow.
  • start(at:) is now deprecated on MimiUserFlow.
  • then() is now deprecated on MimiUserFlow.
  • then(if:) is now deprecated on MimiUserFlow.
  • then(or: decision:) is now deprecated on MimiUserFlow.
  • MimiUserFlowCoordinatorError.invalidCurrentIndex is now deprecated.
  • MimiLayoutClass now conforms to RawRepresentable with an Int type.
  • UITraitCollection.mimiHorizontalLayoutClass is now deprecated.
  • UITraitCollection.mimiVerticalLayoutClass is now deprecated.

Fixed

  • Issue where jump(to: .last) would not always behave expectedly in MimiUserFlow.
  • Test condition notifications will no longer be shown for unavailable tests in MimiProfileViewController.
  • Issue where MimiFontBook.Collection could fail to use correct default fonts.
  • Issue where MimiFontBook could fail to fallback to default fonts for the current userInterfaceIdiom.

4.7.0

Released on 2020-10-27

Added

  • Ability to export a PTT Test Result to a shareable PDF to MimiPTTResultDetailsViewController.
  • Support for integrating MimiSDK via CocoaPods.
  • Support for handling Keychain Sharing to MimiCore.
  • Information banner to MimiMTResultDetailsViewController and MimiPTTResultDetailsViewController if retaking a test is unavailable.
  • .unsupportedDevice to MimiTestFlowError.
  • didLayoutSubviews() to MimiBulletinItem.
  • Ability to export the result of a previously undertaken test via export(testResult: with name: result:) to MimiTestController.
  • .invalid to MimiCoreError.DataError.
  • AnyMimiTestResult protocol to MimiCoreKit to which MimiTestResult conforms.

Updated

  • Minimum deployment target to 12.0, dropping support for iOS 11.
  • The hearing test is now unavailable from MimiProfileViewController when running on an Apple Silicon based Mac.
  • MimiTestFlow.build() will now throw a MimiTestFlowError.unsupportedDevice when running on an Apple Silicon based Mac.
  • MimiCoreKit now supports being linked to application extensions.
  • MimiConfiguration.alwaysShowHearingResults is now deprecated and no longer functional.

Fixed

  • Issue where calling setTitleColor() on MimiActionButton would fail to update the image tint.
  • Issue where volume adjustment interruption could erroneously appear after ending a phone call in MimiTestFlow.
  • Issue with visual artifacts on cards while loading in MimiProfileViewController on certain devices.
  • Text layout issues using MimiLabel.
  • Issue where finish(to: completion:) could fail to execute the completion closure in MimiActivityIndicator.

4.6.3

Released on 2020-10-16

Fixed

  • Issue where interruptions could fail to present in MimiTestFlow.

4.6.2

Released on 2020-09-22

Updated

  • A user can no longer continue navigation within a MimiTestFlow while in an active call.

Fixed

  • Issues where a call would leave a test unable to resume in MimiTestFlow.
  • Issue where a test interruption could occur after dismissal of a MimiTestFlow.

4.6.1

Released on 2020-08-15.

Fixed

  • Build issues with Xcode 12.0 GM.

4.6.0

Released on 2020-09-11.

Added

  • MimiProcessingToggle to MimiSDK to enable/disable processing on the active processing handler.
  • MimiProcessingIntensitySlider to MimiSDK to update the current intensity on the active processing handler.

Updated

  • Playback will now require a manual restart if the application leaves the foreground during MT Volume Adjustment in MimiTestFlow.
  • MimiTextField now utilizes a rounded rectangle style.
  • Minor styling and layout improvements to flows within MimiAuthFlow.
  • Users can no longer change audio outputs during a hearing test in MimiTestFlow.

Fixed

  • Issue where finish() could fail to execute while isAnimating is true in MimiActivityIndicator.
  • AutoLayout warnings that sometimes occurred when using MimiProfileViewController.
  • Issue where a ‘Session Expired’ alert could present following deletion of a user in the Mimi Account Portal.
  • Issue where header artwork in MimiProfileViewController could fail to layout correctly.
  • Issue where a MimiProfileViewController embedded as a child could fail to inset correctly.

4.5.1

Released on 2020-08-20.

Updated

  • Headphones list during PTT test is now be tailored to the host device in MimiTestFlow.

4.5.0

Released on 2020-08-12.

Added

  • Ability to display a warning if the user has indicated severe hearing loss from a PTT test in MimiProfileViewController.
  • Ability for a user to recover from a forced log out event due to token expiry.
  • .missingSignature to MimiCoreError.SigningError.
  • user(MimiUser) to MimiAuthRoute to allow for authenticating known anonymous users.
  • autoFill(for:) to MimiAuthFlow to automatically fill fields within an authentication flow with user details.
  • signature parameter to MimiTest.init.
  • signature property to MimiTest and MimiTestRunResultData.

Updated

  • Improved text legibility during test selection in MimiTestFlow.
  • User data is now automatically reloaded when MimiProfileViewController and MimiProfileLauncherView are initialized.
  • Email text field is now checked for a valid address in MimiAuthFlow Log In flow.

Fixed


4.4.0

Released on 2020-07-13.

Added

  • Ability to retake a test when viewing detailed results in MimiPTTResultDetailsViewController and MimiMTResultDetailsViewController.
  • MimiMTResultDetailsViewController to MimiTestKit to present detailed MT results.
  • MimiPTTResultDetailsViewController to MimiTestKit to present detailed PTT results.
  • Ability to include test results in the result when submitting a test via submit(test:provideResults:) in MimiTestController.
  • Delay to allowing progression from volume adjustment during MT test in MimiTestFlow.
  • MimiHearingGradeSpectrumView to MimiTestKit.
  • MimiEarIndicatorView to MimiTestKit.
  • MimiTestConditionsBulletin to MimiTestKit.
  • MimiTestConditionsData to MimiTestKit.
  • options: [MimiTestFlowOptions] parameter to MimiTestFlow.build() for configuring test flow options.
  • description(context: short:) to MimiHearingGrade.
  • detailedDescription(context: short:) to MimiHearingGrade.
  • tintColor to MimiHearingGrade.
  • results to MimiTest.
  • data to MimiTestRun.
  • .init(data: noiseData: metadata:) to MimiTestRun.
  • unsupportedTest to MimiTestResultError.
  • .cross to MimiActivityIndicator.ErrorArtwork.
  • .exit to MimiIconBook.
  • reloadUser() to MimiAuthController.
  • updateUser() to MimiAuthController.
  • launchAccountPortal() to MimiAuthController.
  • insightComputationFailed error to MimiTestResultError.MT.
  • SigningError to MimiCoreError.

Updated

  • Test submissions and results are now automatically verified via signatures.
  • Minor UI improvements to MimiProfileViewController.
  • Deprecated results in MimiTestRun.
  • Deprecated .init(results: noiseData: metadata:) in MimiTestRun.
  • Deprecated profileContext on Mimi which is no longer functional.
  • Deprecated MimiProfileContext in MimiSDK.
  • Deprecated reload() in MimiUserController.
  • Deprecated update() in MimiUserController.
  • Deprecated launchAccountPortal() in MimiUserController.
  • Deprecated MimiUserController.

Fixed

  • Issue where MimiProfileViewController would fail to present view controllers correctly when using .automatic presentation style on iOS 13.
  • Reduced CPU usage when taking a PTT test in MimiTestFlow.
  • Issue where a test state could overlap when finishing an individual test run in MimiTestFlow.
  • Issue where MimiTextButton would fail to tint images correctly.
  • Issue where animation artefacts could occur when selecting a text field in MimiAuthFlow.
  • Issue where connectionType in MimiHeadphones could have been incorrectly nil.
  • Issue where MimiUserFlow would fail to throw an Error when jumping to a .next step that doesn’t exist.

4.3.1

Released on 2020-04-30.

Fixed

  • Issue that caused MimiSDK to fail to build due to Swift Compiler bug (SR-898)

4.3.0

Released on 2020-04-28.

Added

  • Ability for a user to take a PTT Test to MimiTestFlow.
  • Ability for a user to select the type of test to take to MimiTestFlow.
  • Ability to display warnings and errors that occurred during a test on the profile and detailed results.
  • Ability for anonymous users to use remote device authorization features.
  • Support for Mimi remote configuration via configuration: MimiConfigurationController on MimiCore.
  • MimiHearingGradeBorderedAvatarView to MimiTestKit.
  • MimiHearingGradeAvatarView to MimiTestKit.
  • noiseData to MimiTestRun.
  • loadHeadphones(connectionType: result:) to MimiTestController.
  • MimiRemoteConfiguration to MimiCoreKit
  • configuration to MimiProcessingController to replace config.
  • MimiProcessingConfiguration to MimiCoreKit.
  • MimiHeadphones to MimiCoreKit
  • MimiResourceController to allow loading remote resources via resource in MimiCore.
  • isRelated(to:) to MimiUser.
  • Support for .ptt() errors to MimiTestError
  • mimiStartShimmering() and mimiStopShimmering() to UIView in MimiUXKit.
  • MimiIconView to MimiUXKit.
  • MimiIconBook to MimiUXKit.
  • MimiPagingScrollHandler to MimiUXKit.
  • MimiPagingProgressCalculator to MimiUXKit.
  • hidesBackButton parameter to push(childFlow:) in MimiUserFlowCoordinator.
  • parent to MimiUserFlow.
  • contentInset to MimiBulletinItem.
  • standardContentInset to MimiBulletinItem.
  • isFullWidth to MimiBulletinItem.

Updated

  • Fatal test interruptions are now followed by a countdown in MimiTestFlow.
  • Improved performance with loading latest test results following test submission.
  • MimiProcessingConfig is now deprecated.
  • config is now deprecated on MimiProcessingController.
  • MimiTestResultError is now Hashable and Equatable.
  • Improved error display in MimiProfileViewController when a test result is erroneous.

Fixed

  • Issue where profile could get stuck in processing loading state during log in.
  • Issue where MimiCheckbox could have an incorrect isChecked state when embedded in a UITableViewCell.
  • Issue where requests could fail to provide a result in MimiCoreKit.
  • Issues where properties in MimiTestRun could incorrectly be nil.
  • Issue where MimiUserFlow could potentially jump to an incorrect location.
  • Issue where MimiTestFlow components would not be released from memory correctly.
  • Issue where an unsupported calendar could be used in MimiBirthYearPickerView.
  • Issue where a MimiBulletinItem could not have performed layout before willAppear(animated:).

4.2.0

Released on 2020-03-23.

Added

  • Ability to authenticate remote devices to MimiProfileViewController.
  • allowRemoteDeviceAuthorization to MimiConfiguration to enable remote authorization features.
  • deviceAuthorization authentication flow to MimiAuthFlow to authenticate remote devices.
  • Ability to request remote device authorization via requestDeviceAuthorization() to MimiAuthController.
  • Ability to approve a remote device authorization request via approveDeviceAuthorization(request:) to MimiAuthController.
  • MimiDeviceAuthRequest to represent an individual remote authorization request.
  • Ability to request authentication with a MimiDeviceAuthRequest using .deviceAuthorization(request:) to MimiAuthRoute.
  • layoutContentToSafeArea to MimiUserFlowStep to dictate whether to constrain content views to the safe area or superview.
  • MimiInstructionStepView to MimiUX.
  • MimiAuthFlow.build(route:) to build authentication flows in MimiAuthFlow.

Updated

  • authenticate() in MimiAuthController now returns an optional MimiAuthTokenRequest which can be cancelled.
  • MimiAuthFlow.for(route:) is now deprecated.

Fixed

  • Issue where warnings could incorrectly be nil in MimiPTTTestRunResultData.
  • Issue where dismiss() in MimiUserFlow would ignore the animated flag.

4.1.0

Released on 2020-03-09.

Added

  • Support for displaying PTT and MT results in MimiProfileViewController.
  • Support for displaying detailed PTT results and audiograms to MimiProfileViewController.
  • Noise familiarity step before an MT Hearing Test to allow a user to experience the test audio.
  • Ability to troubleshoot bluetooth connection during headphone disconnection interruption in a Hearing Test.
  • Ability to exit a hearing test when interrupted due to headphone disconnection.
  • Ability to load latest test results via loadLatestResults() to MimiTestController.
  • latestResults cached results object to MimiTestController.
  • MimiTestResult model object that depicts an individual test result.
  • MimiTestResults model object that contains both an MT and PTT MimiTestResult.
  • MimiHearingGrade enum to depict the calculated grade of a user’s hearing ability.
  • MimiTestResultError enum to handle errors or warnings that occurred when generating a MimiTestResult.
  • MimiTestRunResultData protocol that depicts an object which provides result data for an individual test run.
  • MimiMTTestRunResultData model object that depicts result data for an individual MT test run.
  • MimiPTTTestRunResultData model object that depicts result data for an individual PTT test run.
  • MimiTestAudiogram model object which depicts data for a generated PTT result audiogram.
  • invalidateIntrinsicSize() to MimiBulletinController.
  • MimiToggleButton control to MimiUXKit.
  • MimiPageControl control to MimiUXKit.
  • willAppear(animated:) to MimiUserFlow.
  • didAppear(animated:) to MimiUserFlow.
  • userFlow(_ flow: MimiUserFlow, willAppear animated: Bool) to MimiUserFlowDelegate.
  • userFlow(_ flow: MimiUserFlow, didAppear animated: Bool) to MimiUserFlowDelegate.
  • Support for new authentication model response formats from Mimi API.

Updated

  • Improved loading states in MimiProfileLauncherView.
  • Deprecated loadLegacyInsights() in MimiTestController.
  • Deprecated MimiTestLegacyInsights.
  • Deprecated MimiTestLegacyInsightsCategory.
  • Deprecated MimiMTTestLegacyInsights.
  • MimiAlertBanner(title:) initializer is now public.

Fixed

  • Issue where an interruption could fail to present correctly in MimiTestFlow.
  • Issue where Equatable in MimiUser would only compare id and not all properties.

4.0.1

Released on 2020-01-29.

Fixed

  • Issues that could cause the processing state to be incorrect in MimiCoreKit.

4.0.0

Released on 2020-01-21.

Updated

  • MimiCore.framework has been renamed to MimiCoreKit.
  • MimiUX.framework has been renamed to MimiUXKit.
  • MimiTestFlow.framework has been renamed to MimiTestKit.
  • MimiAuthFlow.framework has been renamed to MimiAuthKit.
  • MimiSDK class has been renamed to Mimi.
  • MimiSDKDelegate protocol has been renamed to MimiDelegate.
  • Updated warning color in MimiBrandTheme.

Fixed

  • Issue where Profile header could get stuck on loading state when loading processing information.
  • Issue where incorrect cards could display on MimiProfileViewController.
  • Issue where test submission requests could fail incorrectly.
  • Issue where Mimi Account Portal could fail to present properly.
  • Incorrect tint color of volume slider during test interruptions.
  • Issue where special characters could not be used in MimiAuthFlow password inputs.
  • Issue where Hearing Test could become unresponsive when interrupted.

3.2.1

Released on 2019-12-09.

Updated

Fixed

3.2.0

Released on 2019-11-22.

Added

  • MimiProcessingConfig which can be used to configure behaviors and mechanisms in processing.
  • .config to MimiProcessingController to apply a new MimiProcessingConfig.
  • Ability to receive discrete() or continuous processing parameter updates via MimiProcessingConfig.parameterDeliveryStyle.
  • Ability to set a custom processing parameter delivery timeout via MimiProcessingConfig.parameterDeliveryTimeout.
  • MimiTestFlow.didSubmitTestNotification notification for observing successful test submissions.
  • MimiTestFlow.didFailToSubmitTestNotification notification for observing failed test submissions.
  • alwaysShowHearingResults to MimiConfiguration to allow for always displaying Hearing Grade results in all Profile contexts.

Updated

Fixed

  • Issue where processing could fail to automatically enable in MimiCore.
  • Issue where a failed request could prevent future requests to the same API from succeeding in MimiCore.
  • Issue where test button interaction could cause inactivity interruptions to fail in MimiTestFlow.
  • Issue where Practice Round could fail to show error state correctly in MimiTestFlow.
  • Issue where the hearing health banner could fail to disappear in MimiProfileViewController.
  • Issue where the MimiProfileViewController could fail to load correctly when offline when using the .health profile context.
  • AutoLayout warnings that could occur when logging out of an account in MimiProfileViewController.
  • Issue where Hearing Grade bubbles could size incorrectly in MimiProfileViewController.
  • Issue where headers in MimiProfileViewController could fail to respect safe areas correctly.

3.1.0

Released on 2019-11-12.

Added

  • profileContext to MimiSDK to allow for selecting the type of Mimi Profile to display.
  • Support for the .health profile context to MimiProfileViewController; allowing for a hearing health focussed profile.
  • Ability to load legacy Mimi test insights via loadLegacyInsights() on MimiTestController.
  • Support for legacy MT Test insights via MimiMTTestLegacyInsights.
  • secondaryForegroundColor to MimiColorBook for secondary foreground elements that contrast against background colors.
  • primaryForegroundColor to MimiColorBook to replace foregroundColor.

Updated

  • MimiProfileViewController now has a new look and feel on iPad.
  • Anonymous users will now automatically attempt re-authentication on a failed token refresh.
  • Improved font support on iPad.
  • Improved MimiBulletinItem display on iPad.
  • Deprecated foregroundColor on MimiColorBook.
  • Minor appearance updates and improvements.
  • Users can no longer skip both ears of a hearing test.
  • Improved MimiProfileViewController performance.
  • Improved animations and transitions in MimiProfileViewController.

Fixed

  • Issue where MimiTest timestamps could be incorrectly parsed.
  • Issue where MimiAlertController would layout incorrectly on iPad during split-screen.
  • Issue where MimiUserFlowCoordinator could crash during interactive dismissal on iOS 13.
  • Issue where MimiAlertBanner.show() could fail to return a presented MimiAlertBanner.
  • Layout issues with large test artwork on iPad in MimiTestFlow.
  • Issue where artwork in MimiProfileViewController could scale incorrectly.
  • Memory issues in MimiProfileViewController.

3.0.0

Released on 2019-10-01.

Added

  • Support for iOS 13 and Xcode 11.
  • Support for Dark Mode in iOS 13.
  • MimiTestFlow.didStartNotification notification for detecting when a MimiTestFlow started.
  • MimiTestFlow.didBecomeActiveNotification notification for detecting when a MimiTestFlow became active with the current audio session.
  • MimiTestFlow.didBecomeInactiveNotification notification for detecting when a MimiTestFlow has finished with the current audio session.
  • MimiTestFlow.didFinishNotification notification for detecting when a MimiTestFlow finished.
  • processingDidUpdate() to MimiProcessingParameterObservable for observing parameter updates.
  • Ability to provide theme variants for a UIUserInterfaceStyle via variantForUserInterfaceStyle(UIUserInterfaceStyle) -> MimiTheme to MimiThemeDefinition.
  • isModalInPresentation to MimiUserFlowStep.
  • willDismiss(animated:) to MimiUserFlow.
  • didDismiss(animated:) to MimiUserFlow.

Updated

  • MimiSDK no longer supports iOS 10.
  • MimiSDK no longer supports Swift 4 and requires Swift 5.
  • apply(value:completion:) is now replaced by setParameter(MimiProcessingParameter.Writable, result:) on MimiProcessingHandler.
  • loadValue(for:completion:) is now replaced by getParameter(MimiProcessingParameter.Readable, result:) on MimiProcessingHandler.
  • set(value:completion:) is now setParameter(MimiProcessingParameter.Writable, result:) on MimiProcessingController.
  • get(parameter:completion:) is now getParameter(MimiProcessingParameter.Readable, result:) on MimiProcessingController.
  • get(parameters:completion:) is now getParameters(MimiProcessingParameters.Readable, result:) on MimiProcessingController.
  • Invalidation of a MimiProcessingParameter.Readable parameter will now trigger an automatic get and deliver the results via observables.
  • Invalidating preset or fitting will now trigger new preset generation and force delivery in MimiCore.
  • A user can no longer progress past volume adjustment when the volume is muted in MimiTestFlow.
  • Improved localized strings.
  • Improved card layout in MimiProfileViewController.
  • Improvements to transitions between states in MimiProfileViewController.
  • Minor improvements to UI components in MimiUX.
  • Removed fittingRule from MimiProcessingHandler.
  • Removed observable from MimiProcessingController.
  • Removed MimiProcessingControllerObservable.
  • Removed load(route:fittingRule:result:) from MimiPersonalizationController.
  • Removed canProcessingBeEnabled from MimiProcessingController.
  • Removed activate(handler:) from MimiProcessingController.
  • Removed invalidate(cause:) from MimiProcessingController.
  • Removed MimiPersonalization.FittingRule.
  • Removed MimiProcessingError.
  • Removed processingDidInvalidate() from MimiProcessingParameterObservable.
  • Removed processingDidGet() from MimiProcessingParameterObservable.
  • Removed processingDidSet() from MimiProcessingParameterObservable.
  • Removed MimiLabel.Style.largeTitle.
  • Removed MimiFontBook.Font.largeTitle.
  • Removed MimiFontBook.largeTitle.
  • Removed MimiCheckbox.checkColor.
  • Removed start(clientId:clientSecret:) from MimiSDK.

Fixed

  • Issues where getting a MimiProcessingParameter could potentially return an incorrect value.
  • Button styling when using .destructive Style in MimiTextButton.
  • Issue where MimiActionButton could cause AutoLayout errors.
  • Issue where MimiLabel could use an incorrect text color.
  • Issue where Terms of Use would fail to redirect correctly in MimiAuthFlow.
  • Fix issues where test audio would fail to resume when re-entering the foreground in MimiTestFlow.
  • Fix issue where the test button could overlap other controls in MimiTestFlow.
  • Fix issue where test audio could be outputted through the speaker during an interruption in MimiTestFlow.
  • Fix interaction issues with the test button in MimiTestFlow.
  • Layout issues where a card could fail to size correctly in MimiProfileViewController.
  • Memory leak in MimiProfileViewController.
  • Performance issues with header artwork in MimiProfileViewController.

2.2.2

Released on 2019-08-29.

Fixed

  • Issue where Signing up for a Mimi account could fail.

2.2.1

Released on 2019-08-29.

Updated

  • Improved efficiency of accessing fitting parameter on a MimiProcessingHandler.
  • Corner radius of a MimiBulletinItem are now reduced on devices with a home button.
  • Corner radius of a MimiSnackbar are now reduced on devices with a home button.
  • Color of a title label created via makeTitle() on MimiBulletinViewMaker is now primaryText.
  • Spacing between components in a MimiBulletinItem has been reduced to 16pt.
  • Minor styling improvements to MimiAuthFlow presentation.
  • Minor styling and appearance improvements to interruptions in MimiTestFlow.

Fixed

  • Layout issues due to localizations in MimiProfileViewController.
  • Incorrect status bar style when viewing Mimi Account Portal in MimiProfileViewController.
  • Issue where card could become unresponsive during onboarding in MimiProfileViewController.
  • Issue where processing could inadvertently be disabled when entering the background in MimiTestFlow.
  • Issues that could cause test output through the speaker during interruptions in MimiTestFlow.
  • Issues that could cause an interruption to fail to present in MimiTestFlow.
  • Issues that could cause an interruption to fail to dismiss in MimiTestFlow.
  • Layout issues that could cause interruptions to have a broken layout in MimiTestFlow.
  • Issues where a MimiBulletinItem could fail to size correctly.
  • Issue where the title of a MimiBulletinItem would truncate incorrectly.
  • Issue where invalidating the fitting parameter would not trigger a new preset fetch in MimiCore.
  • Issues where credential field autofill would be inconsistent in MimiAuthFlow.
  • Incorrect status bar style when viewing Privacy Policy / Terms of Use in MimiAuthFlow.

2.2.0

Released on 2019-08-20.

Added

  • Sign Up support to MimiProfileViewController.
  • Support for Sign Up via signUp(data:) on MimiAuthRoute.
  • Automatic fitting support with .fitting MimiProcessingParameter.
  • Legal disclaimer to Hearing ID card on MimiProfileViewController.
  • MimiPersonalization.FittingInfo to provide information related to automatic fitting.
  • isVerified to MimiUser stating whether the user has a verified Mimi account.
  • MimiSignUpData model for storing Sign Up data.
  • supportedInterfaceOrientations to MimiUserFlowStep.
  • message to MimiValidatingTextField for persistent information message display.
  • messageColor to MimiValidatingTextField.
  • numberOfLines to MimiValidatingTextField to configure the number of lines of a message/validation error to display.
  • synchronizeSecureTextEntry(with:) to MimiCredentialTextField to allow for sync of secureTextEntry states with another field.
  • MimiFontBook.header to replace MimiFontBook.largeTitle.
  • MimiLabel.Style.header to replace MimiLabel.Style.largeTitle.
  • textAlignment to MimiNavigationStepHeaderView.
  • isChecked to MimiCheckbox.
  • setChecked(animated:) to MimiCheckbox.
  • addAsChild(to:layout:) to MimiUserFlow to allow for a flow to be added as a child view controller.
  • interactionController(for:in:) -> UIViewControllerInteractiveTransitioning? to MimiUserFlow.
  • animationControllerForPush(to:header:content:footer:) -> UIViewControllerAnimatedTransitioning? to MimiUserFlowStep.
  • animationControllerForPop(to:header:content:footer:) -> UIViewControllerAnimatedTransitioning? to MimiUserFlowStep.

Updated

  • Stlying improvements in MimiProfileViewController.
  • Improved test layout and styling in MimiTestFlow.
  • Improved localized strings.
  • Rotation is now not supported on iPhone devices.
  • Improved layout adaptability on smaller screen devices in MimiAuthFlow.
  • Improved layout on iPad in MimiAuthFlow.
  • MimiUserFlow will now support portait orientation only by default on iPhone devices.
  • MimiActionButton default intrinsic height is now 52 pt.
  • MimiActionButton corner radius is now 8 pt when using the .rounded cornerStyle.
  • MimiCompactActionButton corner radius is now 8 pt when using the .rounded cornerStyle.
  • MimiBrandFontBook uses new improved fonts.
  • MimiUserFlowStep now inherits from NSObject.
  • Improved MimiUserFlow layout adaptability on compact devices when the keyboard is visible.
  • Improved styling of MimiActionButton when using outline displayStyle.
  • Improved styling of MimiCheckbox.
  • Deprecated .fittingRule on MimiProcessingHandler.
  • Deprecated MimiPersonalization.FittingRule.
  • Deprecated MimiFontBook.largeTitle.
  • Deprecated MimiLabel.Style.largeTitle.
  • Deprecated MimiCheckbox.checkColor.

Fixed

  • Issue where comparing two MimiUser could return incorrect results.
  • Issue where processing parameters could incorrectly reset to default values in MimiCore.
  • Issue where a MimiProcessingHandler could fail to enable.
  • Issue where incorrect hardware device identifier would be used by MimiTestMetadata.
  • Issue where MimiNavigationStepFooterView could have incorrect transforms with the keyboard visible.
  • Issue where MimiCheckbox would fail to set state programatically.
  • Issue where headphones connection interruption could display too early in MimiTestFlow.

2.1.0

Released on 2019-07-22.

Added

  • id to MimiPersonalization.Preset
  • id to MimiUser.
  • parameterObservable to MimiProcessingController.
  • handlerObservable to MimiProcessingController.
  • get(parameters:completion: to MimiProcessingController.
  • isProcessingAvailable to MimiProcessingController.
  • invalidate(parameters:cause:) to MimiProcessingHandler allowing for invalidation of individual parameters
  • invalidateAll(cause:) to MimiProcessingHandler.
  • activate(handler:completion:) to MimiProcessingController.
  • deactivate() to MimiProcessingHandler.
  • canEnable to MimiProcessingParameter and MimiProcessingParameter.Value.
  • Timeout of 10s to MimiProcessingParameter delivery and retrieval.
  • Add .processing(error:) and .processingHandler(error:) to MimiCoreError.

Updated

  • Improved masker levels during Hearing Test in MimiTestFlow.
  • Deprecated MimiProcessingControllerObservable.
  • Deprecated observable on MimiProcessingController.
  • Deprecated canProcessingBeEnabled in favor of isProcessingAvailable on MimiProcessingController.
  • Deprecated activate(handler:) in favor of activate(handler:completion:) on MimiProcessingController.
  • Deprecated invalidate(cause:) on MimiProcessingController.
  • Deprecated MimiProcessingError.
  • MimiCore is now responsible for caching presets rather than the MimiProcessingHandler.
  • Improved performance of parameter delivery and retrieval in MimiCore.
  • Improved efficiency of preset delivery, ensuring duplicate presets are not delivered in MimiCore.

#### Fixed

  • Issue where a MimiUser could fail to have a unique identifier.
  • Issues where automatic delivery of a preset could be unreliable in MimiCore.
  • Issues where automatic enabling of processing could be unreliable in MimiCore.

2.0.1

Released on 2019-07-11.

Updated

  • Improved localized strings.
  • Improved text styling.
  • Improved animated interaction handling in Onboarding.
  • Improved error messages when resetting a password in MimiAuthFlow.
  • Enhanced autofill when entering credentials in MimiAuthFlow.
  • Improved loading states when logging in in MimiAuthFlow.
  • Updated styling of password text field visibility toggle in MimiCredentialTextField.
  • Improved accuracy of volume adjustment targets in MimiTestFlow.
  • Improved Practice Round interaction feedback in MimiTestFlow.
  • Updated Test progress display to be consistent with Practice Round in MimiTestFlow.
  • MT Test now runs at 4kHz in MimiTestFlow.
  • Improved font styling in MimiFontBook.mimiBrand.

Fixed

  • Issue where cancelling during onboarding would lead to the incorrect destination.
  • Issue where Processing toggle would fail to use a custom theme font.
  • Issue where system volume could fall out of sync with volume views in MimiTestFlow.
  • Issue where Practice Round could get stuck when entering the background in MimiTestFlow.
  • Issues where interruptions during a test in MimiTestFlow could fail to present correctly.
  • Issue where MimiAlertController would be interactive during dismissal.
  • Issue where MimiAlertPresentable could fail to dismiss an alert.

2.0.0

Released on 2019-06-26.

Added

  • canProcessingBeEnabled to MimiProcessingController allowing for temporary disable of processing.
  • interactionDelegate to MimiBulletinItem.
  • MimiProfileLauncherView to allow for fast, flexible launching of the Mimi Profile.
  • MimiProfileNavigationController to use a pre-configured UINavigationController with the Profile embedded.
  • tech3(Tech3) to MimiPersonalization.FittingRule.

Updated

  • Resized Exit button that is provided in a modal MimiUserFlow.
  • Improved haptics when using a MimiAlertController.
  • UIView.startLoading() is now UIView.mimiStartLoading().
  • UIView.stopLoading() is now UIView.mimiStopLoading().
  • Removed insights(type:for:result:) from MimiTestController.
  • Removed Insights model objects from MimiCore.
  • Removed .tests from MimiUser.
  • Removed MimiUser.TestId.
  • Removed deprecated MimiCheckmark.
  • Removed deprecated MimiErrorAvatar.
  • Removed deprecated MimiTheme parameters.
  • Removed deprecated backgroundColor from MimiUserFlow.
  • Improved state transition animations in MimiProfileViewController.
  • Improved localized strings.
  • Improved layout of MimiProfileViewController on iPad.
  • Removed legacy fitting rules from MimiPersonalization.FittingRule.

Fixed

  • Issue where user configured processing parameters could be incorrectly overridden by automated systems in MimiCore.
  • Issue where automatic activation of processing could fail due in MimiCore.
  • Issue that could cause AutoLayout warnings in MimiLoadingView.
  • Issue that caused MimiActivityIndicator to fail to render correctly on iOS 10.
  • Issue where custom line spacing would cause layout issues in MimiAttributedLabel.
  • Crash when audio session would fail to start due to an active phone call / interruption in MimiTestFlow.
  • Issue where Mimi processing could be active during a Hearing Test in MimiTestFlow.
  • Issues where Practice Round state would get stuck and not update in MimiTestFlow.
  • Issue where audio session would fail to deactivate after completing a test in MimiTestFlow.
  • Issue where interruptions would not be correctly handled when adjusting the test volume in MimiTestFlow.
  • Issue where test inactivity might not be reset correctly in MimiTestFlow.
  • Issue where failing to enable processing would not be represented correctly in MimiProfileViewController.
  • Crash on iOS 10 with loading state in MimiProfileViewController.
  • Issue where processing state would be inaccurate when disabled in MimiProfileViewController.
  • Memory issues with MimiProfileViewController.
  • Incorrect encoding of payload in MimiPersonalization.Preset.
  • Issue where Profile processing state could fail to load.

2.0.0-beta.5

Released on 2019-06-12.

Added

  • New Mimi Profile with MimiProfileViewController to MimiSDK.
  • Alert when a user is forcibly logged out due to an error in authentication.
  • Year of Birth input step to MimiTestFlow.
  • preferredIndicatorColor to startLoading() on UIView.
  • mimiAddHighlightsAttribute() to NSMutableAttributedString.
  • MimiBirthYearPickerView to allow for Year of Birth input to MimiUX.
  • Behavior which migrates anonymous users to an authenticated account during log in to MimiCore.
  • launchAccountPortal() to MimiUserController with Mimi Account Portal integration.
  • oldUser: parameter to authController(didUpdate:) in MimiAuthControllerObservable.
  • Automatic enable & disable of Processing with user environment conditions in MimiCore.
  • Validation to MimiProcessingController to prevent processing being enabled when the environment is invalid.

Updated

  • Improved localized strings.
  • Removed MimiProfileHearingComponent.
  • Removed MimiProfileAuthComponent.
  • Removed MimiProfilePersonalizationComponent.
  • Removed supporting classes for Profile v1.
  • Improved iPad layout support.
  • MimiTestFlow.for(test:) now throws an Error if there is no authenticated user in MimiTestFlow.
  • Removed MimiAlertPresentable support from MimiSnackbar.
  • Removed MimiAlertPresentable support from MimiAlertBanner.
  • Refactored MimiThemeDefinition to include MimiColorBook, MimiFontBook and MimiStyleBook.
  • Improved default themes.
  • Renamed MimiProcessing.Parameter to MimiProcessingParameter.
  • Renamed MimiProcessing.ParameterValue to MimiProcessingParameter.Value.
  • Removed MimiProcessing.
  • Improve log out behaviour when logging in - will now only log out following a succesful authentication in MimiCore.
  • logOut() will now do nothing if no user is currently authenticated in MimiCore.
  • MimiUser is now Equatable.
  • Removed sdkVersion from MimiTestMetadata.

Fixed

  • Issue with Practice Round button layout in MimiTestFlow.
  • Interaction issues with multiple touches in the Pause menu in MimiTestFlow.
  • Layout issues where MimiLoadingView would fail to compress correctly.
  • Issue where MimiLoadingView would fail to stop animating.
  • Race issues with completion states of MimiActivityIndicator.
  • Issue where .tests would not be cleared following a new authentication in MimiTestController.
  • Threading issues with updating .tests in MimiTestController.

2.0.0-beta.4

Released on 2019-05-23.

Added

  • systemFont(ofSize:weight:) to MimiFont.

Updated

  • Improved localized strings.

Fixed

  • Issue where alert banners would fail to dismiss in MimiAuthFlow.
  • Issue where invalid test data could be incorrectly submitted in MimiTestFlow.
  • Issues where interruptions could fail to present correctly in MimiTestFlow.

2.0.0-beta.3

Released on 2019-05-13.

Added

  • .tests to MimiTestController to provide cached test data in MimiCore.
  • Artwork to Log In & Forgot Password screens in MimiAuthFlow.
  • Ability to show latest test date in MimiProfileHearingComponent.

Updated

  • Improved performance of authorization and authentication.
  • Improved performance of request execution.
  • tests is now deprecated on MimiUser in MimiCore.
  • Improved animations when showing & dismissing the keyboard during a MimiUserFlow in MimiUX.
  • Optimised UI components for small screen devices in MimiUX.
  • Improved error messages when authentication fails in MimiAuthFlow.
  • Improved localized strings.

Fixed

  • Issues where MimiBulletinController presentation could fail during dismissal.
  • Layout issues with MimiBulletinController during presentation.
  • Improved interruptions service reliability in MimiTestFlow.
  • Issues with practice round animations in MimiTestFlow.
  • State issues in MimiProfileHearingComponent.

2.0.0-beta.2

Released on 2019-04-29.

Added

  • Automatic preset delivery on lifecycle events via MimiProcessing in MimiCore.
  • MimiSDKDelegate which must be set on MimiSDK.start(credentials:delegate).
  • preset to MimiProcessing.Parameter.
  • preset(MimiPersonalization.Preset?) to MimiProcessing.ParameterValue.
  • fittingRule to MimiProcessingHandler.
  • clear() to MimiTheme to allow for resetting a theme to system defaults.
  • registerForTheming() to MimiThemeable for registering an object to be themed.
  • .theme to MimiThemeable to access the currently active theme.

Updated

  • Improved theming engine that responds better to dynamic changes.
  • Improved support for overriding themed properties to components in MimiUX.
  • Refactored MimiPersonalization data models for new structure.
  • Refactored MimiProcessing.ParameterValue to remove required default parameter names.
  • payload is now Data on MimiPersonalization.Preset.
  • apply(theme:) now has an optionable MimiThemeDefinition on MimiThemeable.
  • MimiThemeService is now internal.
  • register(themeable:) is removed from MimiThemeService.
  • activeTheme is removed from MimiThemeService.
  • Removed start(clientId: String, clientSecret: String) from MimiCore.
  • Improved Hearing Test Engine in MimiHTE.
  • start(clientId: String, clientSecret: String) is now unavailable on MimiSDK.

Fixed

  • Improved authentication state handling in MimiCore.
  • Transition issues in Practice Round in MimiTestFlow.
  • Issues with tearing down audio stack when dismissing MimiTestFlow.

2.0.0-beta.1

Released on 2019-04-15.

Added

  • Swift 5 support.
  • Xcode 10.2 support.
  • Localization support for translations in 8 different languages.
  • Improved logging.
  • start(credentials:) to MimiSDK.
  • id to MimiTest
  • id to MimiTest.Insights
  • Validation to Preset fetching in MimiCore.
  • Ability to start with environment and credentials via start(credentials:) to MimiCore.
  • Ability to switch environments with credentials via update(environment:credentials:) to MimiCore.
  • Ability to load individual test via load(with identifier:result:) to MimiTestController.
  • processingController(didUpdate currentHandler:) to MimiProcessingControllerObservable when handlers are activated / deactivated.

Updated

  • MimiProfilePersonalizationComponent now communicates with the Processing interface in MimiCore.
  • Deprecated start(clientId: clientSecret:) in MimiSDK.
  • Removed Hearing ID graph from MimiProfileHearingComponent.
  • Minor layout updates to Profile components.
  • Practice Round to use latest HTE timing logic in MimiTestFlow.
  • Practice Round to use simplified feedback in MimiTestFlow.
  • Improved access controls on extensions in MimiUX.
  • Tests API to support latest changes from backend in MimiCore.
  • data is now an InsightsData object rather than an array in MimiTestRun.Insights.
  • Removed intensity parameter support from MimiPersonalizationController.
  • md5 is now internal on MimiPersonalization.Preset.
  • Removed MimiPersonalization.Intensity.
  • .environment is no longer settable on MimiCore.
  • Deprecated start(clientId:clientSecret:) on MimiCore.
  • Deprecated TestId on MimiUser.

Fixed

  • Issue where test would not start correctly after inputting Year of Birth.
  • Missing initializer that could cause crash in MimiActivityIndicator.
  • Incorrect user model being passed to result of authenticate() in MimiAuthController.
  • Issue where user updates would not correctly trigger observable functions in MimiAuthController.

2.0.0-alpha.3

Released on 2019-03-27.

Added

  • Enhanced loading and success states to Year of Birth entry flow in MimiProfile.
  • Enhanced support for iPad.
  • Reset Password flow to MimiAuthFlow.
  • MimiActivityIndicator with loading animations and finished states including success & error to MimiUX.
  • MimiLogger to provide logging framework with level control.
  • .log shared MimiLogger to MimiCore.
  • MimiPersonalizationController for loading personalized presets and audio data.
  • MimiProcessingController that provides interface for communication between Audio Processing and MimiCore.
  • MimiProcessingHandler protocol for Audio Processors to implement for communication with MimiCore.

Updated

  • Project is now Universal.
  • MimiProfileComponentCollectionCell is now open.
  • MimiProfileComponentTableCell is now open.
  • Improved loading and completion animations to MimiAuthFlow.
  • Improved animations during test submission in MimiTestFlow.
  • Removed all logging by default.
  • Removed default explicit heightAnchor constraint from MimiActionButton.
  • Improved MimiAlertBanner presentation from transparent views.
  • MimiLoadingView to use MimiActivityIndicator.
  • Make startAnimating() open on MimiLoadingView.
  • Make stopAnimating() open on MimiLoadingView.
  • Add optional completion closure to stopAnimating() on MimiLoadingView.
  • Deprecated MimiCheckmark.
  • Deprecated MimiErrorAvatar.
  • Keyboard updates in MimiUserFlow are now relative to view positioning.
  • Renamed MimiMTInsights to MimiMTTestInsights.
  • Renamed MimiMTCurve to MimiMTTestInsights.Curve.
  • Renamed MimiMTExampleCurve to MimiMTTestInsights.ExampleCurve.
  • Renamed MimiInsightsData to MimiInsights.

Fixed

  • Constraint issue on bulletins which could cause vertical sizing issues in MimiUX.
  • Potential alpha issues on MimiActionButton when updating states.
  • Missing sizing constraints on MimiUserFlowStepHeaderView.None.
  • Missing sizing constraints on MimiUserFlowStepFooterView.None.
  • Missing exceptions when attempting to navigate to an invalid .parent flow location in MimiUserFlow.
  • Missing exceptions when attempting to navigate to an invalid .start flow location in MimiUserFlow.
  • Text layout issues using MimiLabel.
  • Incorrect layout margins in MimiUserFlow on iOS 10.

2.0.0-alpha.2

Released on 2019-03-18.

Added

  • User details to authenticated state of MimiAuthProfileComponent.
  • Confirmation alert to Log Out action of MimiAuthProfileComponent.
  • Ability to dismiss by tapping outside the bounds of Auth screens to MimiAuthFlow.
  • Support for HTE error states with UI Alerts to MimiTestFlow.
  • .style to MimiTextButton.
  • .style to MimiCompactTextButton.
  • .style to MimiAlertAction.
  • Support for MimiAlertAction.Style to MimiAlertController.
  • Support for MimiAlertAction.Style to UIAlertController.
  • kern to MimiFont.
  • mimiHorizontalLayoutClass to UITraitCollection.
  • mimiVerticalLayoutClass to UITraitCollection.
  • Refactored MimiAlertBanner with improved API and animations.
  • Haptic feedback to MimiSnackbar.
  • Ability to load insights via insights(type:for:result:) on MimiTestController.
  • Data models for MimiMTInsights.
  • testType to MimiTestRun.
  • ear to MimiTestRun.
  • timestamp to MimiTestRun.
  • Ability to reset a user’s password via resetPassword(email:result:) on MimiAuthController.

Updated

  • Removed ‘Manage Account’ button from MimiAuthProfileComponent.
  • Skip button is now hidden when Practice Round is completed in MimiTestFlow.
  • Improved Volume Adjustment interruption state styling in MimiTestFlow.
  • Improved general layout on small screen devices in MimiTestFlow.
  • Updated border width of Volume slider target in MimiTestFlow.
  • Improve layout of Volume Adjustment interruption in MimiTestFlow.
  • Use rounded corners for test progress slider track in MimiTestFlow.
  • Use new artwork for Headphone Input step in MimiTestFlow.
  • Remove back button from Practice Round in MimiTestFlow.
  • Updated text styles on Volume Adjustment screen in MimiTestFlow.
  • Shrink iconography on Volume view in MimiTestFlow.
  • Updated text styles on Headphone Disconnect interruption in MimiTestFlow.
  • Renamed MimiAlert.Action to MimiAlertAction.
  • Increased contentInset around MimiBulletinRootViewController.
  • Use compactBody font in MimiSnackbarDefaultContentView.
  • Improved layout of MimiNavigationStepHeaderView on smaller iPhones.
  • Renamed present() to show() on MimiSnackbar.
  • Renamed dismiss() to hide() on MimiSnackbar.
  • MimiBrandFont with improved line spacing and styling.
  • MimiSnackbar font style to actionCompact.
  • .controller is now optional on MimiBulletinItem.
  • Made MimiBulletinItem animations faster.

Fixed

  • Issue where authentication state would show for anonymous users in MimiAuthProfileComponent.
  • Issue where minimising the flow could cause audio distortment issues in MimiTestFlow.
  • Animation issues with Practice Round in MimiTestFlow.
  • Issues where interruptions could be blocked and fail to appear in MimiTestFlow.
  • Issue where haptics would incorrectly be used for volume changes in MimiTestFlow.
  • Issue where test would fail to Pause correctly in MimiTestFlow.
  • Use primaryBackgroundColor for Test button in MimiTestFlow.
  • Text rendering issues in Test steps on small devices in MimiTestFlow.
  • Issue where test could resume when attempting to exit in MimiTestFlow.
  • Incorrect background color in Test status screens in MimiTestFlow.
  • Use correct font for Volume Adjustment interruption labels in MimiTestFlow.
  • Incorrect state on Headphone Disconnect interruption in MimiTestFlow.
  • Incorrect Highlighted tint on MimiCheckbox.
  • Line cropping issue with MimiLabel.
  • Memory issue with MimiValidationEngine.
  • Memory issues with custom font registration in MimiUX.
  • Potential crash in MimiBulletinItem presentation.

2.0.0-alpha.1

Released on 2019-03-04.

Initial release of the new MimiSDK.