Releases: mixpanel/mixpanel-iphone
Bug Fixes and Maintenance
- Resolved an issue with In-App Notifications truncating instead of creating a new line for long strings
- Resolved an issue that prevented Tweaks from working correctly if integrating through Carthage
- Fix a possible crash in
mp_importantColor
if your image was a non-standard size - Changed the behavior of
flushWithCompletion:
to always callarchive
regardless of whether or not you supplied a handler toflushWithCompletion:
. - Resolved a number of bugs with our watchOS 2 implementation. It works with Cocoapods and Carthage now, without any additional work.
Better flexibility for networking
- Made internal network calls more resilient and added back off
- Increased internal event queue size to 5,000 from 500
- Added readonly property
isSurveyAvailable
to help determine if you should callshowSurvey
- Fixed a possible crash in
MPEventBinding
- Fixed hard coded code signing identity in HelloMixpanel sample
Patch update for watchOS
- Resolved some issues with building the watchOS target for Carthage
- Fixed a crash in
MPSwizzler
checkForSurveysWithCompletion:
andcheckForNotificationsWithCompletion:
no longer use a cache internally, so they will always return the latest data. This means you don't need to wait for users to background your app to see updated notifications or surveys.
Support for watchOS 2, plus many bug fixes!
Features
- Added beta support for watchOS 2 (currently only supports
track:properties:
, people support coming next update) - Added functionality to unset all device tokens on a people profile
- Added a new exception handler
- Added a class method
[Mixpanel libVersion]
to allow access of the version before initializing the shared instance - Performed a nullability audit to increase ease of use in Swift code bases; This means optionals will have more significance when interacting with the library
Bug Fixes
- Fixed a bug when building with Carthage due to the presence of CFBundleExecutable in the Info.plist
- Fixed a bug with negative $duration values when using
timeEvent:
- Fixed a bug with variants and eventBindings not being reset properly
- Fixed a bug where events would incorrectly report their source device as an Apple watch
- Fixed a potential crash in
checkForDecideResponseWithCompletion:useCache:
- Fix for Objective-C tweaks when Mixpanel is built as a framework
Maintenance
- Renamed websocket categories to prevent collision with SRWebSocket
Bug fixes and the return of landscape in-app notifications
ALL ISSUES WITH ATS ARE RESOLVED AND YOU NO LONGER NEED TO WHITELIST
- Fixed incorrect sample code in some documentation.
- Fixed a possible error when setting a
flushInterval
to a different value. - Restored support for landscape in-app notifications on all devices.
- Fixed a bug where background tasks were not expired correctly in some cases, resulting in iOS throwing an assertion and suspending the app.
Bug fixes for Carthage
In preparation for full Swift support, the next release (v3.0.0) will only support iOS 8+ via Carthage and CocoaPods. If you would like to use Swift and the Mixpanel SDK on iOS 7 you will be required to integrate manually, as neither Carthage nor CocoaPods support integration to iOS 7 with Swift since they depend on the dynamic library feature that was released with iOS 8.
- Resolved all iOS 9 / Xcode 7 warnings.
- Fixed the deployment target for Carthage builds.
We're still waiting on our CDN to update their SSL certificate to be compatible with ATS. You will need to whitelist our CDN URL if you are using in-app notifications with custom images. Here is the raw plist values you should use for this:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>mxpnl.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
We apologize for the inconvenience and we hope to have this resolved in the near future.
Carthage Support
- Added support for Carthage.
- Updated
MPWebSocket
code to prevent a rare crash. - Flushing is faster for debug builds.
Bug fixes and code improvements
- Converted code base to modern Objective-C using Xcode's automated tools.
- Added optional completion handler for flush -
flushWithCompletion:
. - Resolved a potentional crash in
MPObjectSelector
. - Moved private code from static library out in to the public repo.
Bugfix
Handle case where a new version of an app may no longer contain a class that we had attached codeless event bindings to. This update means the event bindings will become inactive if the class they depend on is removed.
Mixpanel works with App Extensions (including WatchKit)
This version of Mixpanel can be installed in iOS app extensions, including WatchKit extensions. If you are using CocoaPods, you can do the following in your Podfile:
target "MyApp" do
pod "Mixpanel"
end
target "MyApp WatchKit Extension" do
pod "Mixpanel/AppExtension"
end
The AppExtension version removes all iOS functionality that is not available in app extensions, such as access to [UIApplication sharedApplication]
and extended background tasks. We also remove mixpanel functionality that is not applicable to extensions, such as surveys and in-app notifications. This is accomplished by adding the MIXPANEL_APP_EXTENSION
macro to your build settings. If you are not using CocoaPods, you should add that macro to the PreProcessor Macros
section of your app extension target in XCode.
There is a slight behavior change for the app extension version of mixpanel, where all track:
calls are immediately sent to mixpanel instead of being buffered and periodically flush
ed, as they are in the regular version. This is because we do not have access to the same kinds of app lifecycle events in an app extension, and are not able to spawn an extended background task to flush your events after the app extension closes.