Support many more notification formats and options:
BigText style
BigPicture style
Inbox style
Small icon
Large icon
Action buttons
Sound
Color
Default / no / custom vibration pattern
Default / no / custom led lighting pattern and color
HTML styling everywhere (fonts, colors, sizes, italic, bold, superscript, etc.)
Sub text
Info / number
Group
Sort key
Local only (do not appear on watch)
Only alert once (do not alert when updating a notification)
Timestamp / chronometer / no timestamping
Visibility
Progress
Ticker
Persons
Category
Ongoing (notification cannot be cleared until another update clears this flag)
Ship 100 material icons for your notification action buttons and small icons (Android does not permit dynamically loading such resource, they have to be bundled within the application)
Use expansible text format by default so longer text is properly fully displayed
Avoid system picker with HTTP deep-links if the application handles them directly
Update to Google Play Services GCM 8.4.0 for better push token renewal
Fix use of reflection without matching Proguard rules
Reduce number of network calls in case of push token renewal and application update
Report device country and currency
Permit auto dropping a notification received in foreground
Support omitting notification reception event
Fix small mistake in influenced app open measurement
Do not show data notifications that mimic an alert
Fix OpenUDID setup
Deprecate WonderPushBroadcastReceiver
Upgrading:
If you use a custom BroadcastReceiver for Handling your own notifications, as previously advised in the guide, please check your setup, and migrate to a GcmListenerService like advised from now on.
Permit auto dropping/opening a notification received in foreground
Do not simulate system alert for data notifications received in foreground
Report device country and currency
Handle updateInstallation button action
Handle "at notification click" actions
Do not simulate system alert for data notifications received in foreground
Report aps-environment entitlement to distinguish development from production
Regroup individual app open/close into sessions, like on the other platforms
Improve notification reception reporting using the remote-notification background execution mode
Fix from notification and influenced app open reporting
Fix notification reaction event reporting
Miscellaneous fixes
Upgrading
There are 3 new points that requires your attention:
We now use CocoaPods to ease the installation of the WonderPush SDK.
The integration is also facilitated in your AppDelegate, you won't have to implement methods just to call the WonderPushSDK.
You should add the remote-notification background execution mode for better statistics tracking.
I don't use CocoaPods yet
Don't worry it's easy. Install it using the following command:
sudo gem install cocoapods
You can read the complete installation guide here, but you normally won't need it.
(In some cases it can take 1-2 minutes before showing anything on the screen, just be patient, it's working real hard...)
Once CocoaPods is installed, you'll have to create a Podfile for your project.
You can give a try to the specially purposed command:
pod init
Or you can edit the Podfile file yourself so that it reads the following:
platform :ios, "7.0"
Then simply run:
pod install
This will edit your project to create a multi-project workspace so that each dependency builds as their respective developer planned them to build.
Finally, you will need to close your project in XCode, and open instead the newly created YourProject.xcworkspace file, as indicated in the command output.
You can continue with the next section.
Adding the WonderPush SDK as a CocoaPods dependency
Edit your Podfile to add the following line:
pod 'WonderPush', '~> 2.0'
Next run the following command to effectively download and incorporate WonderPush to your project:
pod install
You are now set to use the latest 1.2.x.x version. (You'll note that we dropped the v1 prefix, that denotes the API version to conform to semantic versioning.)
To perform a version update when a new one becomes available, you would simply run pod update.
AppDelegate changes
We now offer delegate chaining to permit the SDK to implement all the necessary methods without requiring you to do anything.
To use this technique, replace every call to made to WonderPush from your AppDelegate by the following code:
The key here is the +[WonderPush setupDelegateForApplication:] method call.
We placed it in the application:willFinishLaunchingWithOptions: method because this way the application:didFinishLaunchingWithOptions: can be properly intercepted.
Should you need to setup the delegate in the latter for any reason, make sure in addition to call the same-named method of the SDK yourself.
If you do not wish to use this automatic setup, you will have to implement each method of the UIApplicationDelegate protocol that have their matching function in the WonderPush SDK, and call the SDK in each of them.
The use of the automatic delegate setup does not prevent your implementations of the same-named methods from being called.
In fact our delegate makes sure that every message it receives is passed on to your delegate, whether it intercepted it for its own needs or not.
One caveat you may need to know: Our delegate implements the application:didReceiveRemoteNotification:fetchCompletionHandler: method, this means that the application:didReceiveRemoteNotification: of your delegate will no longer be called. You are asked to use the former instead. Here is the official documentation.
remote-notification background execution mode
This permits your app to receive silent or data-only notifications, as well as better report influenced application opens, by measuring the time between the reception of the notification and the following application open.
Although not mandatory, you are highly encouraged to add it to your app.
Fix issues when calling some functions from background thread.
Fix notification while application in foreground not being displayed as heads-up.
Use launcher icon in rich notifications, permit using another for the notification center.
Update targetSdk to 23
Update android-async-http to v1.4.9.
Include OpenUDID as source, not jar
Update OpenUDID to solve a SecurityException on some Samsung devices
Upgrading:
You can remove all the changes done to your AndroidManifest.xml.
They are now automatically added by the Android Manifest Merger, triggered when building you project using Gradle or Android Studio.
For a precise list of those changes, see the documentation of the previous version.
You must now include the WonderPush Android SDK as a gradle dependency as follows in your app/build.gradle:
// Include the SDK dependency
dependencies {
compile 'com.wonderpush:wonderpush-android-sdk:1.2.0.0'
}
// Configure the few necessary parameters for the manifest merger
android {
defaultConfig {
manifestPlaceholders = [
// Corresponds to [NOTIFICATION_ICON] in the previous manifest,
// in the "notificationIcon" metadata of the WonderPushBroadcastReceiver.
wonderpushNotificationIcon: '@mipmap/ic_launcher',
// Corresponds to [YOUR_MAIN_ACTIVITY_CLASS] in the previous manifest,
// in the "activityName" metadata of the WonderPushBroadcastReceiver.
wonderpushDefaultActivity: '.MainActivity' // you can use a fully qualified class too here
]
}
}