# Changelog

**PushLinkAndroid-5.6.0.jar 2024.07.22**

* Now it works on Android 12, 13, and 14 \[Build.VERSION.SDK\_INT <= 34]. It requires new permission `<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />` in AndroidManifest.xml
* The NINJA strategy was removed
* [Fixed Path Traversal Vulnerability](https://support.google.com/faqs/answer/7496913)
* Pushlink.hasPengingUpdate with wrong spelling was removed.

**PushLinkAndroid-5.5.3.jar 2018.05.19**

* Now it works on Android 8 (Oreo) \[Build.VERSION.SDK\_INT <= 26]. It requires new permission `<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />` in AndroidManifest.xml

**PushLinkAndroid-5.5.2.jar 2016.11.11**

* Now it works on Android 7 (Nougat) \[Build.VERSION.SDK\_INT <= 24]. It requires `<provider android:name="com.pushlink.android.FileProvider" android:authorities="your.package.name" android:exported="true" />` in AndroidManifest.xml
* Now pushlink cleanup old downloaded apks.
* The new CUSTOM strategy is available. ([**NINJA is deprecated**](https://pushlink.gitbook.io/docs/strategies#background)**)**

**PushLinkAndroid-5.5.0.jar 2016.04.18**

* Fixed ninja NPE when using broadcast receiver

**PushLinkAndroid-5.4.5.jar 2016.03.13**

* Ninja fallback. (If the broadcast receiver is not present, it uses the classic ninja.)
* Commons network exceptions are now in debug level in logcat

**PushLinkAndroid-5.4.4.jar 2016.03.01**

* ~~Ninja now works in Android 5 or higher. Its requires the `<receiver android:name="com.pushlink.android.NinjaReceiver" />` in AndroidManifest.xml~~
  * **Wrong judgment. Ninja does not work in** [**Android 5**](https://pushlink.gitbook.io/docs/strategies#background)**.**
* `Ninja.setExtraShellCommand()` deprecated in favor of `Pushlink.setBeforeNinjaTaskShellCommand()`
* Available from Maven and Gradle by jitpack

**PushLinkAndroid-5.4.2.jar 2015.12.03**

* Bugfix: `Pushlink.hasPendingUpdate()` does not ignore the idle status anymore (Pushlink.idle method)

**PushLinkAndroid-5.4.1.jar 2015.11.25**

* Now Ninja is working in Android 64 bits
* Ninja does not execute the `export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/system/lib` command anymore
* New method `Ninja.setExtraShellCommand()` for custom workarounds
* Now Pushlink logs the entire stack trace. (No more clipping)

**PushLinkAndroid-5.4.0.jar 2015.09.30**

* Fixed critical bug when using android:process
* New api method `Pushlink.setMaxExceptionQueueSize()` (to avoid huge cache)

**PushLinkAndroid-5.3.0.jar 2015.04.02**

* Download resume. (Very welcome!)
* Bugfix that would send old exception assigned with wrong version label.
* Bugfix that in `Pushlink.addMetadata()` and `Pushlink.addExceptionMetadata()` when key == null. Not allowed anymore.
* Now it prevents sending the very same exception twice or more.
* Less data transfer when using the metadata api.
* Now `Pushlink.setCurrentActivity()` and `Pushlink.setCurrentStrategy()` are independent of the start method.
* Some timeout adjustments

**PushLinkAndroid-5.1.0.jar 2013.12.14**

* NINJA strategy improved. Now working on a large variety of devices.
* Now PushLink uses only the 443 port. Goodbye 6670 port.

**PushLinkAndroid-5.0.4.jar 2013.11.12**

* Download method improved to avoid memory overflow.
* Popup strategies no more play notification sound.
* Now popup strategies ask for launching the app even in ICS or later.

**PushLinkAndroid-5.0.3.jar 2013.07.31**

* Now it sends the last 200 lines of logcat. (no more 100)
* From now on exceptions have a handled/unhandled label
* New method `PushLink.addExceptionMetadata()`. This metadata is going to appear ONLY in the "Exceptions" tab of the web administration

**PushLinkAndroid-5.0.2.jar 2013.06.17**

* Important bug fix. PushLink.addMetadata wasn't working fine.
* TCP client improvement. It was aborting connections sometimes.
* Installation checking for duplicated ID's improved.
* Method name changed! `PushLink.setCurrentPopUpTarget()` is now `PushLink.setCurrentActivity()`.
* Now PushLink grabs screenshots for unhandled exceptions.

**PushLinkAndroid-5.0.1.jar 2013.02.21**

* Logging improvements
* Bugfix. Calling `PushLink.setCurrentStrategy()` before `PushLink.start()` had no effect.

**PushLinkAndroid-5.0.0.jar 2013.02.06**

* Package change. Now all classes are under "com.pushlink.android"
* Critical bug fix. The heartbeat was not working when the devices were sleeping.
* The Device ID is back. Now the user MUST set the device id. Now the web administration shows off-line installations again.
* Api change to support device ID: Now `PushLink.start()` has a brand new fourth parameter. The device ID.
* Method name changed from `PushLink.sendAsyncNotification()` to `PushLink.sendAsyncException()`.
* Pushlink now has two lightweight threads. They were named  "PushLink-PushListener" and "PushLink-Heartbeat".

**PushLinkAndroid-4.2.1.jar 2012.12.25**

* Huge logging improvements

**PushLinkAndroid-4.2.0.jar 2012.12.17**

* Critical bug fix. Low socket/connection timeout was killing some APK downloads.
* Now, exceptions are always sent lazily with a delivery guarantee. PushLink holds the exception (sqlite persistence) until it can be sent to the server. `PushLink.sendSyncException()` was removed.
* New method `PushLink.hasPengingUpdate()`. This method checks if there is a downloaded but not applied update. It also notifies the user again.
* Log messages improved

**PushLinkAndroid-4.1.1.jar 2012.11.12**

* `PushLink.sendExceptionNotification()` has changed to `PushLink.sendAsyncException()` and `PushLink.sendSyncException()`
* Fixed NPE when `Pushlink.setCurrentPopUpTarget()` called before `PushLink.start()`
* When popup strategies were configured before PushLink.start, the popup title would appear "Application" instead of the real application name. Fixed!
* Log messages improved

**PushLinkAndroid-4.1.0.jar 2012.09.26**

* Lighter. HttpClient code improvement. Fewer data transferred between server and client.

**PushLinkAndroid-4.0.0.jar 2012.09.14**

* Popups strategies now support screen rotation
* It is ready to show online installations in the web administration
* Fixed some minor bugs that could happen in push notification
* `PushLink.addGlobalInfo()` has changed to `PushLink.addMetadata()`

**PushLinkAndroid-3.1.3.jar 2012.07.27**

* Fixed an NPE that would appear in some cases
* Fixed some confusing log information

**PushLinkAndroid-3.1.2.jar 2012.06.06**

* API method `PushLink.idle(boolean)` added. Especially useful for NINJA strategy to update your app only when it is idle. See the usage in JAVADOC.
* Now it sends device coordinates if the GPS is enabled. This is sent only once when the app is started.

**PushLinkAndroid-3.1.1.jar 2012.05.04**

* Bug fixed. It could happen to receive several notifications to the same version in some specific situations.

**PushLinkAndroid-3.1.0.jar 2012.04.23**

* NINJA strategy has been created. Only for rooted devices. BETA!
* Logging improvements.

**PushLinkAndroid-3.0.0.jar 2012.04.20**

* Full redesign to support premium features.
* `PushLink.checkForUpdates()` in no longer available. There is no sense in using the new push architecture.
* `PushLink.start()` method has changed. Now it has only three parameters
* Notification now play standard device sound
* Automatic exception catch/send a notification is the default.
* Added two methods. `PushLink.disableExceptionNotification()` and `PushLink.enableExceptionNotification`

**PushLinkAndroid-2.0.4.jar 2012.03.07**

* `Push.addUserInfoForExceptionNotification()` is now `Push.addGlobalInfo`. This information is going to appear in all exception notifications sent.
* `Push.sendExceptionNotification(Throable)` was overloaded with `Push.sendExceptionNotification(Throwable, Map)`. Now it's possible to send more information about the exception context in Map.
* Professional JAVADOC added

**PushLinkAndroid-2.0.3.jar 2012.03.04**

* `Push.requestUpdateRightNow` is now P`ush.checkForUpdates`
* Now `Push.checkForUpdates()` does not block the thread anymore.
* `Push.checkForUpdates` bug fix. It was rushing the download but not the notification.

**PushLinkAndroid-2.0.2.jar 2012.02.20**

* Now if exceptionNotification is set to false and you call `PushLink.sendExceptionNotification()` it will not throw an exception anymore. It only will log: "You must start pushlink enabling exception notification before using PushLink.sendExceptionNotification or PushLink.addUserInfoForExceptionNotification. Check PushLink.start method exceptionNotification parameter."

**PushLinkAndroid-2.0.1.jar 2012.02.01**

* Exception notification now sends LogCat (Need READ\_LOGS permission)
* Exception notification now sends the whole stack trace
* Fixed some exception notification bugs

**PushLinkAndroid-2.0.0.jar 2012.01.20**

* API Redesigned. All of PushLink's methods are static.
* There is no method `Pushlink.stop()` anymore.
* Now we have exception notification! Receive emails when your app crashes.
* New API method `Pushlink.requestUpdateRightNow()` to rush version check.

**PushLinkAndroid-1.1.3.jar 2011.12.01**

* Now popups strategies work nicely with `PushLink.setCurrentPopUpTarget()`

**PushLinkAndroid-1.1.2.jar 2011.11.22**

* Fixed java.lang.NoClassDefFoundError: com.pushlink.android.SSLHandler when runnig on ADT emulator

**PushLinkAndroid-1.1.1.jar 2011.11.17**

* Pop Up strategy support
* i18n support

**PushLinkAndroid-1.1.0.jar 2011.11.03**

* SSL Support
* Internal storage bug fix

**PushLinkAndroid-1.0.0.jar 2011.10.28**

* Beta test
