Swiftpack.co - Package - microsoft/appcenter-sdk-apple

Coverage Status GitHub Release CocoaPods license

Visual Studio App Center SDK for iOS and macOS

App Center is your continuous integration, delivery and learning solution for iOS and macOS apps. Get faster release cycles, higher-quality apps, and the insights to build what users want.

The App Center SDK uses a modular architecture so you can use any or all of the following services:

  1. App Center Analytics: App Center Analytics helps you understand user behavior and customer engagement to improve your app. The SDK automatically captures session count, device properties like model, OS version, etc. You can define your own custom events to measure things that matter to you. All the information captured is available in the App Center portal for you to analyze the data.

  2. App Center Crashes: App Center Crashes will automatically generate a crash log every time your app crashes. The log is first written to the device's storage and when the user starts the app again, the crash report will be sent to App Center. Collecting crashes works for both beta and live apps, i.e. those submitted to the App Store. Crash logs contain valuable information for you to help fix the crash.

  3. App Center Distribute: App Center Distribute lets your users install a new version of the app when you distribute it with App Center. With a new version of the app available, the SDK will present an update dialog to the users to either download or postpone the new version. Once they choose to update, the SDK will start to update your application. This feature is automatically disabled on versions of your app deployed to the Apple App Store. *Not available for macOS and tvOS.

1. Get started

It is super easy to use App Center. Have a look at our get started documentation and onboard your app within minutes. Our detailed documentation is available as well.

2. Contributing

We are looking forward to your contributions via pull requests.

To contribute to the SDK, please

  • install Xcode 11 on your Mac.
  • install Jazzy to be able to generate documentation.
  • install clang-format for code formatting via Homebrew using the command brew install clang-format.

2.1 Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

2.2 Contributor License

You must sign a Contributor License Agreement before submitting your pull request. To complete the Contributor License Agreement (CLA), you will need to submit a request via the form and then electronically sign the CLA when you receive the email containing the link to the document. You need to sign the CLA only once to cover submission to any Microsoft OSS project.

2.3 Code Formatting

All Objective-C files follow LLVM coding style (with a few exceptions) and are formatted accordingly. To format your changes, make sure you have the clang-format tool. It can be installed with Homebrew using the command brew install clang-format. Once you have installed clang-format, run ./clang-format-changed-files.sh from the repository root - this will format all files that have changes against the remote develop branch (it will also perform a git fetch).

3. Contact

3.1 Support

App Center SDK support is provided directly within the App Center portal. Any time you need help, just log in to App Center, then click the blue chat button in the lower-right corner of any page and our dedicated support team will respond to your questions and feedback. For additional information, see the App Center Help Center.

3.2 Twitter

We're on Twitter as @vsappcenter.

Github

link
Stars: 358

Used By

Total: 0

Releases

4.0.0 -

Version 4.0.0

App Center

  • [Feature] Add support for Apple Silicon to existing macOS modules (arm64 simulators for iOS and tvOS are not supported via CocoaPods).
  • [Feature] [Breaking change] Make SDK API more Swift-friendly. You can find the API updates in the swift migration table.
  • [Breaking change] The App Center prefix MS in Objective-C is consolidated to MSAC for collision prevention. Please follow the migration guide for adopting the new naming.
  • [Fix] Fix NSInvalidArgumentException when using non-string object as a key in NSUserDefaults.
  • [Fix] Fix NSDateFormatter initialization in a concurrent environment.

App Center Crashes

  • [Improvement] Update PLCrashReporter to 1.8.0.

App Center Push

App Center Push has been removed from the SDK and will be retired on December 31st, 2020. As an alternative to App Center Push, we recommend you migrate to Azure Notification Hubs by following the Push Migration Guide.

3.3.4 -

Version 3.3.4

App Center Distribute

  • [Fix] Fix manually checking for updates before applicationDidBecomeActive event.

3.3.3 -

Version 3.3.3

App Center

  • [Fix] Fix compatibility with Xcode 12 beta when integrating SDK from sources.

App Center Analytics

  • [Fix] Fix processing logs (e.g., events) emitted from the applicationWillTerminate application delegate method.

App Center Crashes

  • [Improvement] Update PLCrashReporter to 1.7.2.

3.3.2 -

Version 3.3.2

App Center Distribute

  • [Fix] Obfuscate app secret value that appears as URI part in verbose logs when getting release updates info.

3.3.1 -

Version 3.3.1

App Center Crashes

  • [Fix] Update PLCrashReporter to 1.7.1 that fixes a crash on old operating systems (macOS <=10.11.x and iOS 9.x).
  • [Fix] Fix reporting stacktraces on iOS and tvOS simulators.

3.3.0 -

Version 3.3.0

Add support for Mac Catalyst to App Center Analytics and App Center Crashes. Also, this version has a breaking change - it drops Xcode 10 support, Xcode 11 is a minimal supported version now.

App Center

  • [Feature] Add support for Mac Catalyst.
  • [Fix] Fix Undefined symbol: ___llvm_profile_runtime when the SDK was built from source by Carthage.
  • [Fix] Fix building tvOS frameworks from source by Carthage.
  • [Fix] Fix screen resolution detection on macOS.
  • [Fix] Fix crash when local binary data (where unsent logs or unprocessed crashed are stored) is corrupted.
  • [Fix] When carrier name is retrieved incorrectly by iOS, show nil as expected instead of "carrier" string.

App Center Analytics

  • [Feature] Add support for Mac Catalyst.

App Center Crashes

  • [Feature] Add support for Mac Catalyst.
  • [Improvement] Update PLCrashReporter to 1.7.0.

Known issues

  • Crashes module doesn't work on old operating systems: macOS <=10.11.x and iOS 9.x

3.2.0 -

Version 3.2.0

App Center

  • [Feature] Add support for XCFrameworks.
  • [Improvement] Use namespaced NSUserDefaults keys with the MSAppCenter prefix for all the keys set by the SDK. Fixed a few keys missing namespace.
  • [Feature] Swift Package Manager support for Analytics and Crashes modules.

App Center Crashes

  • [Improvement] Update PLCrashReporter to 1.6.0.

3.1.1 -

Version 3.1.1

App Center Crashes

  • [Improvement] Update PLCrashReporter to 1.5.1.
  • [Fix] Remove the multiple attachments warning as that is now supported by the portal.

3.1.0 -

Version 3.1.0

App Center Distribute

  • [Feature] Add a disableAutomaticCheckForUpdate API that needs to be called before SDK start in order to turn off automatic check for update.
  • [Feature] Add a checkForUpdate API to manually check for update.

3.0.0 -

Version 3.0.0

App Center

  • [Fix] Optimization of release objects from memory during the execution of a large number of operations.
  • [Fix] Disable module debugging for release mode in the SDK to fix dSYM warnings.
  • [Fix] Fix SDK crash at application launch on iOS 12.0 (CTTelephonyNetworkInfo.serviceSubscriberCellularProviders issue).
  • [Fix] The SDK was considering 201-299 status code as HTTP errors and is now fixed to accept all 2XX codes as successful.
  • [Fix] Fix macOS SDK binaries not to contain strong copies for symbolic links.
  • [Improvement] Replaced sqlite query concatenation with more secure bindings.

App Center Auth

App Center Auth is retired and has been removed from the SDK.

App Center Crashes

  • [Fix] Fix an issue to call Crashes delegate callbacks even though a modal window is being shown on macOS apps.
  • [Fix] Fix an issue when React Native SDK did not send wrapperSdk information.
  • [Improvement] Update PLCrashReporter to 1.4.0.

App Center Data

App Center Data is retired and has been removed from the SDK.

App Center Distribute

  • [Feature] Add updateTrack property to be able to explicitly set either MSUpdateTrackPrivate or MSUpdateTrackPublic update track. By default, a public distribution group is used. Breaking change: To allow users to access releases of private groups you now need to migrate your application to call MSDistribute.updateTrack = MSUpdateTrackPrivate before the SDK start. Please read the documentation for more details.
  • [Behavior change] The public distribution is simplified to provide only one public group. If you have existing public groups defined for your application your users will receive the latest version of all public groups.
  • [Fix] Fix a crash when SFAuthenticationSession accesses the controller which is in the process of being released.
  • [Fix] Fix sign-in when switching to third-party apps while activating updates.

2.5.3 -

Version 2.5.3

App Center

  • [Fix] Improve log messages for errors when it failed to read/write auth token history.

App Center Auth

  • [Fix] Fix build warnings when adding App Center Auth framework in project.

App Center Crashes

  • [Improvement] Report additional details for macOS exceptions thrown on the main thread.
  • [Fix] Fix to send crashes when an application was launched in background and enters foreground.
  • [Fix] Validate error attachment size to avoid server error or out of memory issues (using the documented limit which is 7MB).
  • [Fix] Fix an issue where crash might contain incorrect data if two consecutive crashes occurred in a previous version of the application.

App Center Distribute

  • [Fix] Fix missing alert dialogs in apps that use iOS 13's new UIScene API (multiple scenes are not yet supported).
  • [Fix] Fix an issue where users would sometimes be prompted multiple times to sign in with App Center.

2.5.1 -

Version 2.5.1

App Center

  • [Fix] Fix warnings in Xcode 11 when SDK is installed via CocoaPods.

2.5.0 -

Version 2.5.0

App Center

  • [Fix] Fix header issues with projects not using clang modules.

App Center Crashes

  • [Feature] iOS and macOS extensions support.

App Center Data

  • [Fix] Reduce retries on Data-related operations to fail fast and avoid the perception of calls "hanging".
  • [Fix] Fix an issue where the optional delegate method data:didCompletePendingOperation:forDocument:withError: would throw an exception if not implemented (when using MSData.setRemoteOperationDelegate).

2.4.0 -

Version 2.4.0

App Center

  • [Feature] App Center now supports Carthage integration.

App Center Auth

  • [Fix] Fix token storage initialization if services are started via [MSAppCenter startService:] method.
  • [Fix] Redirect URIs are now hidden in logs.
  • [Fix] Fix interactive sign in on iOS 13. Temporary fix, will be revisited in the future.
  • [Feature] Updated the Microsoft Authentication Library dependency to v0.7.0.

App Center Analytics

  • [Fix] Fix crash involving SDK's ms_viewWillAppear method.

App Center Data

  • [Breaking change] Rename delegate method data:didCompletePendingOperation:forDocument:withError: from MSRemoteOperationDelegate to data:didCompleteRemoteOperation:forDocumentMetadata:withError:.

2.3.0 -

Version 2.3.0

App Center Auth

  • [Feature] App Center Auth logging now includes MSAL logs.

App Center Crashes

  • [Feature] Catch "low memory warning" and provide the API to check if it has happened in last session: MSCrashes.hasReceivedMemoryWarningInLastSession().
  • [Fix] Fix main thread checker's warning during crash processing on macOS.

App Center Distribute

  • [Fix] Obfuscate app secret value that appears as URI part in verbose logs for in-app updates.

2.2.0 -

Version 2.2.0

App Center

  • [Feature] Now supports tvOS.
  • [Feature] Add isRunningInAppCenterTestCloud in MSAppCenter to provide method to check if the application is running in Test Cloud.
  • [Fix] Drop and recreate the database when it is corrupted.

App Center Analytics

  • [Feature] Now supports tvOS.

App Center Crashes

  • [Feature] Now supports tvOS.

App Center Data

  • [Feature] Add support for offline list of documents.
  • [Feature] Change the default time-to-live (TTL) from 1 day to infinite (never expire).
  • [Feature] Add readOptions parameter to the list API.
  • [Feature] Serialize nil and NSNull document values.

App Center Distribute

  • [Fix] Fix crash when an application was minimized on trying to reinstall after setup failure.

2.1.0 -

Version 2.1.0

AppCenter

  • [Fix] Remove Keychain permission pop-up on macOS.
  • [Fix] Improve encryption security.

AppCenterAnalytics

  • [Feature] Support setting latency of sending events via [MSAnalytics setTransmissionInterval:].

AppCenterAuth

  • [Feature] Expose the ID Token and Access Token JWTs in the MSUserInformation object passed to the sign in callback.
  • [Fix] Fix changing signing status may cause logs (e.g., events) to be delayed.
  • [Fix] Validate custom URL scheme before starting Auth and log an error message when it is invalid.
  • [Fix] Fix rare condition where a user is prompted again for their credentials instead of refreshing the token silently.

AppCenterData

  • [Fix] Fix an issue where invalid characters in the document ID are accepted at creation time but causing errors while trying to read or delete the document. The characters are #, \, /, ?, and all whitespaces.
  • [Feature] setRemoteOperationListener method allows to be notified of a pending operation being executed when a client device goes from offline to online.

2.0.1 -

Version 2.0.1

Version 2.0.1 of the App Center SDK includes two new modules: Auth and Data. This version has a breaking change, it only supports Xcode 10.0.0+.

AppCenterAuth

App Center Auth is a cloud-based identity management service that enables you to authenticate users and manage their identities. You can also leverage user identities in other App Center services. *iOS only, not available for macOS.

AppCenterData

The App Center Data service provides functionality enabling developers to persist app data in the cloud in both online and offline scenarios. This enables you to store and manage both user-specific data as well as data shared between users and across platforms. *iOS only, not available for macOS.

AppCenterCrashes

  • [Feature] After calling [MSAuth signInWithCompletionHandler:], the next crashes are associated with an accountId corresponding to the signed in user. This is a different field than the userId set by [MSAppCenter setUserId:]. Calling [MSAuth signOut] stops the accountId association for the next crashes.
  • [Fix] Print an error and return immediately when calling [MSCrashes notifyWithUserConfirmation:] with confirmation handlers not implemented.

AppCenterDistribute

  • [Fix] Starting the application with "Guided Access" enabled blocks the update flow since in-app update is not possible in this mode.

AppCenterPush

  • [Feature] After calling [MSAuth signInWithCompletionHandler:], the push installation is associated to the signed in user with an accountId and can be pushed by using the accountId audience. This is a different field than the userId set by [MSAppCenter setUserId:]. The push installation is also updated on calling [MSAuth signOut] to stop the association.
  • [Fix] Fix updating push installation when setting the user identifier via [MSAppCenter setUserId:].

1.14.0 -

Version 1.14.0

AppCenter

  • [Fix] Fix a crash in case decrypting a value failed.

AppCenterAnalytics

  • [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data on macOS. There is no impact on your current workflow when using App Center.

AppCenterPush

  • [Fix] Fix crash on invoking an optional push callback when it isn't implemented in the push delegate.

1.13.2 -

Version 1.13.2

AppCenter

  • [Fix] Fix a crash if database query failed.

AppCenterDistribute

  • [Fix] Fix a race condition crash on upgrading the application to newer version.

1.13.1 -

Version 1.13.1

AppCenter

  • [Fix] Fix a possible deadlock if the SDK is started from a background thread.

1.13.0 -

Version 1.13.0

AppCenter

  • [Fix] Fix issue where the SDK source could not be built in a directory that contains escaped characters (applies to all modules).

AppCenterAnalytics

  • [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.

1.12.0 -

Version 1.12.0

AppCenter

  • [Feature] Allow users to set userId that applies to crashes, error and push logs. This feature adds an API, but is not yet supported on the App Center backend.
  • [Fix] Do not delete old logs when trying to add a log larger than the maximum storage capacity.
  • [Fix] Fix minimum storage size verification to match minimum possible value.
  • [Fix] Fix reporting carrier information using new iOS 12 APIs when running on iOS 12+.
  • [Fix] Fix a memory leak issue during executing SQL queries.
  • [Fix] Fix a keychain permission issue on macOS applications.
  • [Feature] Add preview support for arm64e CPU architecture.

AppCenterAnalytics

  • [Feature] Add preview support for arm64e CPU architecture.

AppCenterCrashes

  • [Feature] Add preview support for arm64e CPU architecture by using PLCrashReporter 1.2.3-rc1. PLCrashReporter 1.2.3-rc1 is a fork of the official repository and can be found at https://github.com/Microsoft/PLCrashReporter. It is maintained by the App Center team and based on PLCrashReporter 1.2.1 (commit fda23306) with additional fixes and changes.

AppCenterDistribute

  • [Feature] Add preview support for arm64e CPU architecture.

AppCenterPush

  • [Feature] Add preview support for arm64e CPU architecture.

1.11.0 -

Version 1.11.0

AppCenter

  • [Fix] Fix an issue where concurrent modification of custom properties was not thread safe.
  • [Fix] Fix validating and discarding Not a Number (NaN) and infinite double values for custom properties.
  • [Fix] Use standard SQL syntax to avoid affecting users with custom SQLite libraries.
  • [Fix] Get database page size dynamically to support custom values.

AppCenterAnalytics

  • [Feature] Add new trackEvent APIs that take priority (normal or critical) of event logs. Events tracked with critical flag will take precedence over all other logs except crash logs (when AppCenterCrashes is enabled), and only be dropped if storage is full and must make room for newer critical events or crashes logs.

AppCenterCrashes

  • [Fix] Do not force crash macOS application on uncaught exception. If you need this behavior you can set the special flag yourself:

    [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"NSApplicationCrashOnExceptions" : @YES }];
    

AppCenterPush

  • [Fix] Fix push:didReceivePushNotification: callback not triggered on notification tapped or received in foreground when a UNUserNotificationCenterDelegate is set. If you have implemented this delegate please remove any call to the MSPush#didReceiveRemoteNotification: method as it's now handled by the new User Notification Center Delegate Forwarder.

1.10.1 -

Version 1.10.1

This version contains a bug fix for macOS.

AppCenterCrashes

  • [Fix] Fix a regression that was introduced in 1.10.0 on macOS. It caused crash reports to contain an incomplete list of loaded binary images.

1.10.0 -

Version 1.10.0

AppCenter

  • [Fix] Add missing network request error logging.
  • [Feature] Add a setMaxStorageSize API which allows setting a maximum size limit on the local SQLite storage.

AppCenterAnalytics

  • [Feature] Add pause/resume APIs which pause/resume sending Analytics logs to App Center.
  • [Feature] Adding support for typed properties. Note that these APIs still convert properties back to strings on the App Center backend. More work is needed to store and display typed properties in the App Center portal. Using the new APIs now will enable future scenarios, but for now the behavior will be the same as it is for current event properties.
  • [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.
  • [Fix] Fix an bug where nested custom properties for an event would not pass validation.

AppCenterCrashes

  • [Fix] Fix the list of binary images in crash reports for arm64e-based devices.

AppCenterDistribute

  • [Fix] Fix translation of closing a dialog in Portuguese.

1.9.0 -

Version 1.9.0

This version contains bug fixes and a feature.

AppCenter

  • [Fix] Fix a potential deadlock that can freeze the application launch causing the iOS watchdog to kill the application.

AppCenterCrashes

  • [Fix] The above deadlock was mostly impacting the Crashes module.

AppCenterAnalytics

  • [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.

1.8.0 -

Version 1.8.0

This version contains bug fixes and a feature.

AppCenterDistribute

  • [Fix] Fix in-app update occasional initialization failure caused by deletion of update token/group id on HTTP status code '0'.
  • [Fix] Fix Chinese translation of "side-loading".

AppCenterAnalytics

  • [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.

1.7.1 -

Version 1.7.1

This version contains a bug fix and a new feature.

AppCenter

  • [Fix] Fix duplicate symbol errors discovered when using Xamarin wrapper SDK.

AppCenterAnalytics

  • [Feature] Preparation work for a future change in transmission protocol and endpoint for Analytics data. There is no impact on your current workflow when using App Center.

1.6.1 -

Version 1.6.1

This version contains bug fixes.

AppCenterCrashes

  • [Fix] Fix an issue in breadcrumbs feature when events are being tracked on the main thread just before a crash.
  • [Fix] Fix an issue with cached logs for breadcrumbs feature which are sometimes not sent during app start.