This document tracks changes to the API between versions.
- Apptentive Push Notifications will, if possible, now trigger a message fetch in the background. To enable background fetch, several API and project changes are needed:
- Added
didReceiveRemoteNotification:fromViewController:fetchCompletionHandler:API method for passing App Delegate remote notifications to Apptentive. - To enable Message Center background fetch, you should use the
...fetchCompletionHandler:versions of...didReceiveRemoteNotification:...on the App Delegate and on ATConnect. - To enable Message Center background fetch, your app must set Remote Notifications as a valid Background Mode. This mode can be enabled in Xcode via your Target's Capabilities tab, or by adding the value
remote-notificationas aUIBackgroundModein your app's Info.plist. - A
BOOLreturn type has been added to the ATConnectdidReceiveRemoteNotification:...methods. The return value indicates if the Push Notification was sent by Apptentive. - The
completionHandlerblock will be called by Apptentive when the message fetch is completed. To ensure that messages can be retrieved, please do not call thecompletionHandlerblock yourself if the notification was sent by Apptentive. - If the Push Notification was not sent by Apptentive, the parent app is responsible for calling the
completionHandlerblock. - ATConnect has new strongly-typed setters for Boolean, string, number, timestamp and version types for custom person and device data.
- ATConnect is now annotated with nullability and collection types, where applicable.
- The image picker used for attachments in Message Center requires the application window to support portrait orientation (normally configured in Info.plist) for phone-idiom devices. If portrait orientation is not available, the attach button will be hidden and users will be unable to attach files.
- ATConnect's tintColor property is now deprecated in favor of using UIAppearance properties. See the iOS Customization Guide for details.
- ApptentiveConnect now has a deployment target of iOS 7.0, which will support iOS 7, 8, and 9. In the 2.0.0 release we have dropped support for iOS 5 and 6.
- The ApptentiveConnect project has been converted to use Automatic Reference Counting (ARC).
- Message Center UI has been redesigned and improved. Message Center strings and settings are now delivered from the server, allowing you to make remote changes at any time from the Apptentive dashboard.
- The one-way Feedback Dialog has been removed in favor of Message Center and two-way conversations.
- Added
canShowMessageCentermethod. If SDK has not yet synced with Apptentive, you will be unable to display Message Center. UsecanShowMessageCenterto determine if Message Center is ready to be displayed. If Message Center is not ready you could, for example, hide the "Message Center" button in your interface. - Added
BOOLreturn value to thepresentMessageCenterFromViewController:methods. Indicates if Message Center was displayed. IfNO, a "We're attempting to connect" view is displayed instead. - Added
canShowInteractionForEvent:and deprecatedwillShowInteractionForEvent:to better match thecanShowMessageCenternaming convention. - Added
personNameandpersonEmailAddressproperties toATConnect. Set these to pre-populate the respective field in Message Center. - Removed
initialUserNameandinitialUserEmailAddressproperties in favor of the abovepersonNameandpersonEmailAddress. - Added Apptentive Push Notifications, which can be activated via your Apptentive dashboard. You can now implement Push Notifications for new Message Center messages without needing your own Urban Airship, Parse, or Amazon SNS account.
- Added
setPushNotificationIntegration:withDeviceToken:method for setting a Push Notification Provider. Use theATPushProviderenum to specify a service provider, along with thedeviceTokenfromapplication:didRegisterForRemoteNotificationsWithDeviceToken:. Currently supported Push Notification service providers include Apptentive, Urban Airship, Amazon SNS, and Parse. - In light of the new
setPushNotificationIntegration:withDeviceToken:method, removed the legacy integration API methods:addIntegration:withConfiguration:,addIntegration:withDeviceToken:,removeIntegration:,addApptentiveIntegrationWithDeviceToken:,addUrbanAirshipIntegrationWithDeviceToken:,addAmazonSNSIntegrationWithDeviceToken:, andaddParseIntegrationWithDeviceToken:. - Removed
useMessageCenter,initiallyUseMessageCenter, andinitiallyHideBrandingproperties. - Added
-unreadMessageCountAccessoryView:(BOOL)apptentiveHeart, a method that returns a UIView that can be used to display the current number of unread messages in Message Center (with an optional Apptentive heart logo). This is designed to be set as theaccessoryViewin aUITableViewCellthat launches Message Center. - Message Center is still presented via the
presentMessageCenterFromViewController:API. However, if the device has not yet synced with Apptentive, Message Center will be unavailable and a "We're attempting to connect" screen will be displayed instead. This should occur rarely in production apps, but you may see it during development. - Added an in-app banner that can be displayed when new Message Center messages arrive. This banner is toggled via the Apptentive dashboard, not via an API method. Implement the
viewControllerForInteractionsWithConnection:delegate method to pass a View Controller from which to display Message Center after this banner is tapped. If no View Controller is provided, the SDK will attempt to find and use the top-most View Controller.
- Added
willShowInteractionForEvent:method for determining if an interaction will be shown the next time you engage the given event. - Renamed
engage:(NSString *)...parameter name fromeventLabeltoevent.
- Added
ATSurveyShownNotificationnotification when a survey is shown.
- Added
addParseIntegrationWithDeviceToken:for integrating with Parse's Push Notification service.
-
Changed the App Store rating URL to open the "Reviews" tab directly in iOS 7.1+.
-
Added API methods for attaching
customDataandextendedDatato events:
engage:withCustomData:fromViewController:engage:withCustomData:withExtendedData:fromViewController:
- Added methods to easily construct
extendedDatadictionaries in the specific Apptentive format:
extendedDataDate:extendedDataLocationForLatitude:longitude:extendedDataCommerceWithTransactionID:affiliation:revenue:shipping:tax:currency:commerceItems:extendedDataCommerceItemWithItemID:name:category:price:quantity:currency:
- Added ability to remotely hide Apptentive branding in your app via the Apptentive dashboard, contingent upon your account plan.
- Added
initiallyHideBrandingproperty, which hides Apptentive branding in the time prior to the app's initial configuration being retrieved. - Removed
showTagLineproperty, which has been replaced byinitiallyHideBrandingand the remote configuration.
- The
showTagLineproperty ofATConnectnow makes the "Powered By Apptentive" logo in Message Center unclickable. - The language code used for delivering localizations now uses
[[NSLocale preferredLanguages] firstObject]rather than theNSLocaleLanguageCodelocale component.
Surveys are now targeted at Apptentive events via your online dashboard. Log events in your app by calling engage:fromViewController.
- Removed
ASurveys.hheader file. - Moved
ATSurveySentNotificationandATSurveyIDKeyfromATAppRatingFlowtoATConnect. - Removed
ATSurveyNewSurveyAvailableNotification. - Removed
ATAppRatingFlow.hheader file. - Moved
apiKeyproperty fromATAppRatingFlowtoATConnect. - Moved
ATAppRatingFlowUserAgreedToRateAppNotificationnotification fromATAppRatingFlowtoATConnect.
- Added
debuggingOptionsproperty on ATConnect that allows the developer to specify debug logging preferences for their app.
- Added
addAmazonSNSIntegrationWithDeviceToken:method for integrating with Amazon Web Services (AWS) Simple Notification Service (SNS).
- Argument
codePointrenamed toeventLabelinengage:fromViewController:
- Added convenience methods for integrating with Apptentive:
addIntegration:withDeviceToken:addUrbanAirshipIntegrationWithDeviceToken:
The initialUserEmailAddress can now be updated after a user sends feedback with no email address.
Added a BOOL return type to the engage: method.
Added the property initiallyUseMessageCenter to set the local, initial Message Center setting. This will be overridden by the server-based Message Center configuration when it is downloaded.
- Replace
- (void)engage:fromViewController:' with- (BOOL)engage:fromViewController:` - Added
initiallyUseMessageCenterproperty.
We added a workaround for inherited tintColor values which don't look good with our UI.
We also added some new methods for adding files to the user's feedback. The files will not be shown in message center, and are useful for sending debug logs.
- Added
@property tintColorfor overriding the tint color in our UI, in case you're using one that doesn't work well with it in your app. - Added
- (void)sendAttachmentText:(NSString *)text - Added
- (void)sendAttachmentImage:(UIImage *)image - Added
- (void)sendAttachmentFile:(NSData *)fileData withMimeType:(NSString *)mimeType
- Added
openAppStoremethod that immediately opens the app's page on the App Store without going through the Apptentive Ratings Flow.
Added methods for configuring 3rd-party integration services and handling incoming push notifications. Current support for Urban Airship.
[[ATConnect sharedConnection] addIntegration:ATIntegrationKeyUrbanAirship withConfiguration:@{@"token": @"YourUrbanAirshipToken"}];
- Added
addIntegration:withConfiguration: - Added
removeIntegration: - Added
didReceiveRemoteNotification:fromViewController:
Added methods to determine if the Apptentive Rating Flow was shown for a particular call of showRatingFlowFromViewControllerIfConditionsAreMet:
- Replace
- (void)showRatingFlowFromViewControllerIfConditionsAreMet:with- (BOOL)showRatingFlowFromViewControllerIfConditionsAreMet: - Now posting
ATAppRatingDidNotPromptForEnjoymentNotificationNSNotification when rating flow is not shown.
- Added
- (void)presentMessageCenterFromViewController:(UIViewController *)viewController withCustomData:(NSDictionary *)customData; - Added
- (void)engage:(NSString *)codePoint fromViewController:(UIViewController *)viewController; - Added
- (void)addIntegration:(NSString *)integration withToken:(NSString *)token; - Added
- (void)removeIntegration:(NSString *)integration;
- Deprecated
useMessageCenterproperty.
We added a method for users who only want to send feedback, not use the entire Message Center.
- Added
@property useMessageCenter
We have deprecated a few methods and added some new methods where appropriate.
- Deprecated
-addCustomData:withKey: - Deprecated
-removeCustomData:withKey: - Added
-addCustomPersonData:withKey: - Added
-removeCustomPersonData:withKey: - Added
-addCustomDeviceData:withKey: - Added
-removeCustomDeviceData:withKey:
- Deprecated
appName
The following changes from the 0.5.x series were made.
We are moving over to a unified message center, and while breaking the feedback API have decided to take the opportunity to clean up the ratings flow API as well. Below are detailed changes that have been made to the API, but from a simple perspective, you'll want to:
In feedback:
- Replace
-presentFeedbackControllerFromViewController:with-presentMessageCenterFromViewController:. - Replace
addAdditionalInfoToFeedback:withKey:withaddCustomData:withKey:.
In ratings:
- Replace
+sharedRatingFlowWithAppID:with+sharedRatingFlow, and set theappIDproperty. - Remove calls to
-appDidEnterForeground:viewController:and-appDidLaunch:viewController:. - Add calls to
-showRatingFlowFromViewControllerIfConditionsAreMet:where you want the ratings flow to show up. - Replace
-userDidPerformSignificantEvent:viewController:with-logSignificantEvent.
In surveys:
- Replace
+hasSurveyAvailablewith+hasSurveyAvailableWithNoTags. - Remove calls to
+checkForAvailableSurveys. This is now automatic.
initialNamechanged toinitialUserName.initialEmailAddresschanged toinitialUserEmailAddress+resourceBundleis now privateATLocalizedStringis now private- Added
-presentMessageCenterFromViewController: - Added
-dismissMessageCenterAnimated:completion: - Added
-unreadMessageCount - Added
addCustomData:withKey: - Added
removeCustomDataWithKey:
Feedback-related API has been removed.
shouldTakeScreenshotfeedbackControllerType-presentFeedbackControllerFromViewController:-dismissFeedbackControllerAnimated:completion:-addAdditionalInfoToFeedback:withKey:-removeAdditionalInfoFromFeedbackWithKey:
- Renamed
+hasSurveyAvailableto+hasSurveyAvailableWithNoTags. - Renamed
+presentSurveyControllerFromViewController:to+presentSurveyControllerWithNoTagsFromViewController: - Removed
+checkForAvailableSurveys
- Renamed
+sharedRatingFlowWithAppID:to+sharedRatingFlow - Added
@property appID. - Removed
-appDidEnterForeground:viewController: - Removed
-appDidLaunch:viewController: - Removed
-userDidPerformSignificantEvent:viewController: - Added
-showRatingFlowFromViewControllerIfConditionsAreMet: - Added
-logSignificantEvent -showEnjoymentDialog:is now private-showRatingDialog:is now private