-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Push notification #31
Conversation
Shahroz16
commented
Oct 31, 2021
•
edited
Loading
edited
- Add/Remove device
- Track push notification metrics
- Push notification service and reciever
* chore: updated dependencies management * chore: updated process to upload artifacts * chore: added ci workflow for snapshot * chore: ignore idea file changes * chore: updated git ignore to cater idea files * chore: fixed untracked files * chore: added missing dependencies
- Checking if same snapshot artifact gets updated
- Lint - Documentation
* Network layer added * Common module added with support of network layer
* Updated name to avoid conflicts with Retrofit Call object * CustomerIo client facing class added * Client updates - Updated header interceptors - Added network config - Added Custom adapter for retrofit * chore: Added ability to identity customer (#24) * Added features to identity customer * Ktlint changes * sample app set up for local testing * Local testing sample application updated
* Updated name to avoid conflicts with Retrofit Call object * CustomerIo client facing class added * Client updates - Updated header interceptors - Added network config - Added Custom adapter for retrofit * chore: Added ability to identity customer (#24) * Added features to identity customer * Ktlint changes * sample app set up for local testing * Local testing sample application updated * Unidentified error type added * Preference repository added to store customer info * Attributes mapping and types updated * Event tracking added * Event tracking updates - Added `SupportedAttributesFactory` to parse only the acceptable json params - Added clear identity support * Sample application updated with event tracking * Updated Identify to accept variety of data - Previously was limited to string|bool|int * PR suggestions - CustomerIO renamed - PreferenceRepository uses `site ID` as key * Imports sorted * Prefs name updates with site and app id
* Messaging push module added - Add device - Delete device - Track metric * Added metric tracking for push * Added receiver for push open
- Lighter way of generating data classes json models
- API 30 above its deprecated
const val DELIVERY_TOKEN = "CIO-Delivery-Token" | ||
const val REQUEST_CODE = "requestCode" | ||
|
||
private const val CHANNEL_NAME = "CustomerIO Channel" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the name of the default channel that the Android user will see on their device, yes?
Perhaps we should use another name that doesn't include "Customer.io" in it? I say that because if you were a random Android user and you were using an app and you saw this channel name, you wouldn't have any idea if you should delete or keep those push notifications. You may not know what Customer.io is. It's a good name for an internal Android push channel id but not human readable.
Something such as "Announcements" is a good default name, IMO. We plan to give customers the ability to modify the channel for a push so it can change but a name like this is more useful for the Android device user.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm, the reason I went for this channel name is to let users know the source of the notifications. Like you said we will provide the customers with the ability to specify channels while creating notifications and later on we will rely on those.
But in case a customer app has multiple SDK which generate notifications, having a generic name such as Announcement
might be confusing. But if they are able to differentiate which notifications are coming through which channel, they will be able to differentiate and then change priority, block as they intend to.
private const val TAG = "FirebaseMessaging:" | ||
const val DELIVERY_ID = "CIO-Delivery-ID" | ||
const val DELIVERY_TOKEN = "CIO-Delivery-Token" | ||
const val REQUEST_CODE = "requestCode" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A more descriptive variable and variable value would be useful here. Describing the request itself.
* CustomerIo SDK for tracking and rendering | ||
* @param remoteMessage Remote message received from Firebase in | ||
* [FirebaseMessagingService.onMessageReceived] | ||
* @param handleNotificationTrigger indicating if the local notification should be triggered |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you describe a use case for this property? I am unsure what it's doing?
local notification should be triggered - from reading this, does "triggered" mean show up in the system tray? maybe a more descriptive word then "triggered" should be used.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The use case I had in mind while adding it was if the client app wants to track the delivery
of push notifications but wanted to generate a local notification themselves, that would show up in the tray.
Happy to consider changing triggered
if you can suggest alternatives.
* Handles new or refreshed token | ||
* Call this from [FirebaseMessagingService] to register the new device token | ||
*/ | ||
fun handleNewToken(token: String) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have an idea to share.
In the iOS SDK we provide public facing function names that match that of the push service so that way they are easier to remember and use for the customer.
Example:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
MessagingPush.shared.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
...
Notice how the iOS function name for providing a device token is application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
so that's the same function name that our iOS SDK uses for providing a device token.
So the same thing on Android would be:
fun handleNewToken(token: String) { | |
fun onNewToken(token: String) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, I see this now further down the class. From the function documentation, it didn't imply to me that this function is optional and that you can instead call onNewToken()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I intended to match the name as well, but I didn't want the user to be confused in case they have their own implementation of FirebaseMessagingService
. But I'll try to use the same method name and see how it comes out.
try { | ||
CustomerIO.instance().registerDeviceToken(deviceToken = token).enqueue() | ||
} catch (exception: IllegalStateException) { | ||
Log.e(TAG, "Error while handling token: ${exception.message}") | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What would happen if a customer calls handleNewToken()
and the device is in airplane mode or some other situation that would result in an error? It looks like the customer would not get informed that there was an error and they would assume that the device token is registered successfully to the profile.
Would it be better to instead pass the error handling to the function caller?
That's the plan with the iOS SDK at this time: function caller does all error handling then when we implement a background queue in the SDK, we implement breaking changes to the SDK code where the SDK then handles all errors and the customer no longer needs to.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
handleNewToken(token: String)
is supposed to be just called from override fun onNewToken(token: String)
from the FirebaseMessagingService
and it will be only called when the token is actually available so that reduce half of the errors.
But errors can definitely arise, and I agree we should notify the user. I would add a callback in this method.
val flags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | ||
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT | ||
} else { | ||
PendingIntent.FLAG_UPDATE_CURRENT | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Mind adding a comment to the code suggesting why this code exists?
class CustomerIOPushActionReceiver : BroadcastReceiver() { | ||
|
||
companion object { | ||
const val ACTION = "com.customer.messagingpush.PUSH_ACTION" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
const val ACTION = "com.customer.messagingpush.PUSH_ACTION" | |
const val ACTION = "io.customer.messagingpush.PUSH_ACTION" |
val requestCode = intent!!.getIntExtra(REQUEST_CODE, 0) | ||
val mNotificationManager = | ||
context!!.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we avoid the use of !!
? It can use NPE at runtime and crash the SDK.
# [1.0.0-alpha.2](1.0.0-alpha.1...1.0.0-alpha.2) (2021-11-02) ### Features * Push notification ([#31](#31)) ([c639802](c639802))
🎉 This PR is included in version 1.0.0-alpha.2 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
# 1.0.0-beta.1 (2021-12-16) ### Bug Fixes * pro-guarding removal of enums ([#39](#39)) ([dd27d35](dd27d35)) * timestamp conversion issue ([#37](#37)) ([d986f54](d986f54)) * user agent ([#42](#42)) ([37af83e](37af83e)) ### Features * automatic screen tracking ([#52](#52)) ([8f95ebb](8f95ebb)) * event tracking, identify customer ([#29](#29)) ([5181268](5181268)) * manual screen tracking ([#51](#51)) ([213a278](213a278)) * Push notification ([#31](#31)) ([c639802](c639802)) * Rich push support ([#34](#34)) ([2480127](2480127))
🎉 This PR is included in version 1.0.0-beta.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
# 1.0.0 (2022-01-19) ### Bug Fixes * pro-guarding removal of enums ([#39](#39)) ([dd27d35](dd27d35)) * timestamp conversion issue ([#37](#37)) ([d986f54](d986f54)) * updated host endpoints ([#53](#53)) ([efe2b9e](efe2b9e)) * user agent ([#42](#42)) ([37af83e](37af83e)) ### Features * automatic screen tracking ([#52](#52)) ([8f95ebb](8f95ebb)) * event tracking, identify customer ([#29](#29)) ([5181268](5181268)) * manual screen tracking ([#51](#51)) ([213a278](213a278)) * Push notification ([#31](#31)) ([c639802](c639802)) * Rich push support ([#34](#34)) ([2480127](2480127))
🎉 This PR is included in version 1.0.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
## 1.0.0 (2023-02-10) ### ⚠ BREAKING CHANGES * android 12 deep link fix * get current FCM token on SDK startup * register device attributes when set * create background queue to make API synchronous ### Features * add device and profile attribute setters ([789f09f](789f09f)) * add device_manufacturer device attribute ([6a60f39](6a60f39)) * add setting a in-app event listener ([customerio#147](https://github.com/nunofgs/customerio-android/issues/147)) ([5fd9559](5fd9559)) * added option to customize push notification from app ([68010f8](68010f8)) * added shared instance for independent components ([70fa8cd](70fa8cd)) * added support for custom track url ([b61a64b](b61a64b)) * added support for device attributes ([customerio#71](https://github.com/nunofgs/customerio-android/issues/71)) ([5fedf26](5fedf26)) * added support to modify notification small icon ([b93c2dc](b93c2dc)) * automatic screen tracking ([customerio#52](https://github.com/nunofgs/customerio-android/issues/52)) ([8f95ebb](8f95ebb)) * changes for react native package ([2f20ac3](2f20ac3)) * create background queue to make API synchronous ([2524460](2524460)) * delete expired background queue tasks ([8dca8b7](8dca8b7)) * event tracking, identify customer ([customerio#29](https://github.com/nunofgs/customerio-android/issues/29)) ([5181268](5181268)) * get current FCM token on SDK startup ([dda443d](dda443d)) * in app sdk ([1036c80](1036c80)) * in-app feature no longer requires orgId ([customerio#163](https://github.com/nunofgs/customerio-android/issues/163)) ([fc2a08e](fc2a08e)) * manual screen tracking ([customerio#51](https://github.com/nunofgs/customerio-android/issues/51)) ([213a278](213a278)) * Push notification ([customerio#31](https://github.com/nunofgs/customerio-android/issues/31)) ([c639802](c639802)) * register device attributes when set ([0f5159e](0f5159e)) * Rich push support ([customerio#34](https://github.com/nunofgs/customerio-android/issues/34)) ([2480127](2480127)) * sdk initialization re-architecture ([9e21960](9e21960)) * set log level via SDK config ([81eea4e](81eea4e)) * support for custom device attributes and config ([customerio#77](https://github.com/nunofgs/customerio-android/issues/77)) ([a7dbaba](a7dbaba)) * updated client to support react native user agent ([7588526](7588526)) ### Bug Fixes * added alternative route to fetch screen name for automatic tracking ([customerio#92](https://github.com/nunofgs/customerio-android/issues/92)) ([37a20b5](37a20b5)) * added java compatibility in public constructors and methods ([2bb73be](2bb73be)) * added java compatibility in public constructors and methods ([acdec46](acdec46)) * added support for big decimal ([customerio#56](https://github.com/nunofgs/customerio-android/issues/56)) ([58c791b](58c791b)) * allow http requests in host app ([customerio#74](https://github.com/nunofgs/customerio-android/issues/74)) ([1035648](1035648)) * android 12 deep link fix ([fd7ae28](fd7ae28)) * cio sdk version attribute using client value ([bb90f35](bb90f35)) * code cleanup ([c651ee6](c651ee6)) * crash using invalid characters in HTTP header ([customerio#75](https://github.com/nunofgs/customerio-android/issues/75)) ([81a065e](81a065e)) * delete device token when clear identify ([72f9753](72f9753)) * deploy code script commands ([customerio#124](https://github.com/nunofgs/customerio-android/issues/124)) ([fe817d1](fe817d1)) * events are tracked to identified customer ([71634ed](71634ed)) * in-app messages instant delivery ([customerio#150](https://github.com/nunofgs/customerio-android/issues/150)) ([a6dcf3c](a6dcf3c)) * in-app messages stop delivering ([4027502](4027502)) * in-app system link causes app reopen ([6349081](6349081)) * moved shared wrapper code ([customerio#158](https://github.com/nunofgs/customerio-android/issues/158)) ([51af98f](51af98f)) * number parsing coverts to double ([customerio#57](https://github.com/nunofgs/customerio-android/issues/57)) ([72a80fe](72a80fe)) * parsing exception for expired tasks ([440bb13](440bb13)) * pro-guarding removal of enums ([customerio#39](https://github.com/nunofgs/customerio-android/issues/39)) ([dd27d35](dd27d35)) * queue attempts to run all tasks on each run ([e180dea](e180dea)) * register device tokens http request ([b1c6872](b1c6872)) * remove currentRoute parameter in in-app event listener ([customerio#159](https://github.com/nunofgs/customerio-android/issues/159)) ([688e4a5](688e4a5)) * rename in app listener keys ([customerio#164](https://github.com/nunofgs/customerio-android/issues/164)) ([f540eaf](f540eaf)) * set gist user token incase identifier exists ([customerio#162](https://github.com/nunofgs/customerio-android/issues/162)) ([44cc4d1](44cc4d1)) * timestamp conversion issue ([customerio#37](https://github.com/nunofgs/customerio-android/issues/37)) ([d986f54](d986f54)) * track opens fcm notification payload ([ab3cd18](ab3cd18)) * updated host endpoints ([customerio#53](https://github.com/nunofgs/customerio-android/issues/53)) ([efe2b9e](efe2b9e)) * updated json adapter usage to safe parsing ([f72280b](f72280b)) * upgrade dependencies ([customerio#146](https://github.com/nunofgs/customerio-android/issues/146)) ([6da8b8d](6da8b8d)) * user agent ([customerio#42](https://github.com/nunofgs/customerio-android/issues/42)) ([37af83e](37af83e)) * user agent client support in preferences repo ([454a18e](454a18e)) * version bump for gist sdk to resolve messaging not showing bug ([05dad42](05dad42))
## 1.0.0 (2023-02-13) ### ⚠ BREAKING CHANGES * android 12 deep link fix * get current FCM token on SDK startup * register device attributes when set * create background queue to make API synchronous ### Features * add device and profile attribute setters ([789f09f](789f09f)) * add device_manufacturer device attribute ([6a60f39](6a60f39)) * add setting a in-app event listener ([customerio#147](https://github.com/nunofgs/customerio-android/issues/147)) ([5fd9559](5fd9559)) * added option to customize push notification from app ([68010f8](68010f8)) * added shared instance for independent components ([70fa8cd](70fa8cd)) * added support for custom track url ([b61a64b](b61a64b)) * added support for device attributes ([customerio#71](https://github.com/nunofgs/customerio-android/issues/71)) ([5fedf26](5fedf26)) * added support to modify notification small icon ([b93c2dc](b93c2dc)) * automatic screen tracking ([customerio#52](https://github.com/nunofgs/customerio-android/issues/52)) ([8f95ebb](8f95ebb)) * changes for react native package ([2f20ac3](2f20ac3)) * create background queue to make API synchronous ([2524460](2524460)) * delete expired background queue tasks ([8dca8b7](8dca8b7)) * event tracking, identify customer ([customerio#29](https://github.com/nunofgs/customerio-android/issues/29)) ([5181268](5181268)) * get current FCM token on SDK startup ([dda443d](dda443d)) * in app sdk ([1036c80](1036c80)) * in-app feature no longer requires orgId ([customerio#163](https://github.com/nunofgs/customerio-android/issues/163)) ([fc2a08e](fc2a08e)) * manual screen tracking ([customerio#51](https://github.com/nunofgs/customerio-android/issues/51)) ([213a278](213a278)) * Push notification ([customerio#31](https://github.com/nunofgs/customerio-android/issues/31)) ([c639802](c639802)) * register device attributes when set ([0f5159e](0f5159e)) * Rich push support ([customerio#34](https://github.com/nunofgs/customerio-android/issues/34)) ([2480127](2480127)) * sdk initialization re-architecture ([9e21960](9e21960)) * set log level via SDK config ([81eea4e](81eea4e)) * support for custom device attributes and config ([customerio#77](https://github.com/nunofgs/customerio-android/issues/77)) ([a7dbaba](a7dbaba)) * updated client to support react native user agent ([7588526](7588526)) ### Bug Fixes * added alternative route to fetch screen name for automatic tracking ([customerio#92](https://github.com/nunofgs/customerio-android/issues/92)) ([37a20b5](37a20b5)) * added java compatibility in public constructors and methods ([2bb73be](2bb73be)) * added java compatibility in public constructors and methods ([acdec46](acdec46)) * added support for big decimal ([customerio#56](https://github.com/nunofgs/customerio-android/issues/56)) ([58c791b](58c791b)) * allow http requests in host app ([customerio#74](https://github.com/nunofgs/customerio-android/issues/74)) ([1035648](1035648)) * android 12 deep link fix ([fd7ae28](fd7ae28)) * cio sdk version attribute using client value ([bb90f35](bb90f35)) * code cleanup ([c651ee6](c651ee6)) * crash using invalid characters in HTTP header ([customerio#75](https://github.com/nunofgs/customerio-android/issues/75)) ([81a065e](81a065e)) * delete device token when clear identify ([72f9753](72f9753)) * deploy code script commands ([customerio#124](https://github.com/nunofgs/customerio-android/issues/124)) ([fe817d1](fe817d1)) * events are tracked to identified customer ([71634ed](71634ed)) * in-app messages instant delivery ([customerio#150](https://github.com/nunofgs/customerio-android/issues/150)) ([a6dcf3c](a6dcf3c)) * in-app messages stop delivering ([4027502](4027502)) * in-app system link causes app reopen ([6349081](6349081)) * moved shared wrapper code ([customerio#158](https://github.com/nunofgs/customerio-android/issues/158)) ([51af98f](51af98f)) * number parsing coverts to double ([customerio#57](https://github.com/nunofgs/customerio-android/issues/57)) ([72a80fe](72a80fe)) * parsing exception for expired tasks ([440bb13](440bb13)) * pro-guarding removal of enums ([customerio#39](https://github.com/nunofgs/customerio-android/issues/39)) ([dd27d35](dd27d35)) * queue attempts to run all tasks on each run ([e180dea](e180dea)) * register device tokens http request ([b1c6872](b1c6872)) * remove currentRoute parameter in in-app event listener ([customerio#159](https://github.com/nunofgs/customerio-android/issues/159)) ([688e4a5](688e4a5)) * rename in app listener keys ([customerio#164](https://github.com/nunofgs/customerio-android/issues/164)) ([f540eaf](f540eaf)) * set gist user token incase identifier exists ([customerio#162](https://github.com/nunofgs/customerio-android/issues/162)) ([44cc4d1](44cc4d1)) * timestamp conversion issue ([customerio#37](https://github.com/nunofgs/customerio-android/issues/37)) ([d986f54](d986f54)) * track opens fcm notification payload ([ab3cd18](ab3cd18)) * updated host endpoints ([customerio#53](https://github.com/nunofgs/customerio-android/issues/53)) ([efe2b9e](efe2b9e)) * updated json adapter usage to safe parsing ([f72280b](f72280b)) * upgrade dependencies ([customerio#146](https://github.com/nunofgs/customerio-android/issues/146)) ([6da8b8d](6da8b8d)) * user agent ([customerio#42](https://github.com/nunofgs/customerio-android/issues/42)) ([37af83e](37af83e)) * user agent client support in preferences repo ([454a18e](454a18e)) * version bump for gist sdk to resolve messaging not showing bug ([05dad42](05dad42))
## 1.0.0 (2023-02-13) ### ⚠ BREAKING CHANGES * android 12 deep link fix * get current FCM token on SDK startup * register device attributes when set * create background queue to make API synchronous ### Features * add device and profile attribute setters ([789f09f](789f09f)) * add device_manufacturer device attribute ([6a60f39](6a60f39)) * add setting a in-app event listener ([customerio#147](https://github.com/nunofgs/customerio-android/issues/147)) ([5fd9559](5fd9559)) * added option to customize push notification from app ([68010f8](68010f8)) * added shared instance for independent components ([70fa8cd](70fa8cd)) * added support for custom track url ([b61a64b](b61a64b)) * added support for device attributes ([customerio#71](https://github.com/nunofgs/customerio-android/issues/71)) ([5fedf26](5fedf26)) * added support to modify notification small icon ([b93c2dc](b93c2dc)) * automatic screen tracking ([customerio#52](https://github.com/nunofgs/customerio-android/issues/52)) ([8f95ebb](8f95ebb)) * changes for react native package ([2f20ac3](2f20ac3)) * create background queue to make API synchronous ([2524460](2524460)) * delete expired background queue tasks ([8dca8b7](8dca8b7)) * event tracking, identify customer ([customerio#29](https://github.com/nunofgs/customerio-android/issues/29)) ([5181268](5181268)) * get current FCM token on SDK startup ([dda443d](dda443d)) * in app sdk ([1036c80](1036c80)) * in-app feature no longer requires orgId ([customerio#163](https://github.com/nunofgs/customerio-android/issues/163)) ([fc2a08e](fc2a08e)) * manual screen tracking ([customerio#51](https://github.com/nunofgs/customerio-android/issues/51)) ([213a278](213a278)) * Push notification ([customerio#31](https://github.com/nunofgs/customerio-android/issues/31)) ([c639802](c639802)) * register device attributes when set ([0f5159e](0f5159e)) * Rich push support ([customerio#34](https://github.com/nunofgs/customerio-android/issues/34)) ([2480127](2480127)) * sdk initialization re-architecture ([9e21960](9e21960)) * set log level via SDK config ([81eea4e](81eea4e)) * support for custom device attributes and config ([customerio#77](https://github.com/nunofgs/customerio-android/issues/77)) ([a7dbaba](a7dbaba)) * updated client to support react native user agent ([7588526](7588526)) ### Bug Fixes * added alternative route to fetch screen name for automatic tracking ([customerio#92](https://github.com/nunofgs/customerio-android/issues/92)) ([37a20b5](37a20b5)) * added java compatibility in public constructors and methods ([2bb73be](2bb73be)) * added java compatibility in public constructors and methods ([acdec46](acdec46)) * added support for big decimal ([customerio#56](https://github.com/nunofgs/customerio-android/issues/56)) ([58c791b](58c791b)) * allow http requests in host app ([customerio#74](https://github.com/nunofgs/customerio-android/issues/74)) ([1035648](1035648)) * android 12 deep link fix ([fd7ae28](fd7ae28)) * cio sdk version attribute using client value ([bb90f35](bb90f35)) * code cleanup ([c651ee6](c651ee6)) * crash using invalid characters in HTTP header ([customerio#75](https://github.com/nunofgs/customerio-android/issues/75)) ([81a065e](81a065e)) * delete device token when clear identify ([72f9753](72f9753)) * deploy code script commands ([customerio#124](https://github.com/nunofgs/customerio-android/issues/124)) ([fe817d1](fe817d1)) * events are tracked to identified customer ([71634ed](71634ed)) * in-app messages instant delivery ([customerio#150](https://github.com/nunofgs/customerio-android/issues/150)) ([a6dcf3c](a6dcf3c)) * in-app messages stop delivering ([4027502](4027502)) * in-app system link causes app reopen ([6349081](6349081)) * moved shared wrapper code ([customerio#158](https://github.com/nunofgs/customerio-android/issues/158)) ([51af98f](51af98f)) * number parsing coverts to double ([customerio#57](https://github.com/nunofgs/customerio-android/issues/57)) ([72a80fe](72a80fe)) * parsing exception for expired tasks ([440bb13](440bb13)) * pro-guarding removal of enums ([customerio#39](https://github.com/nunofgs/customerio-android/issues/39)) ([dd27d35](dd27d35)) * queue attempts to run all tasks on each run ([e180dea](e180dea)) * register device tokens http request ([b1c6872](b1c6872)) * remove currentRoute parameter in in-app event listener ([customerio#159](https://github.com/nunofgs/customerio-android/issues/159)) ([688e4a5](688e4a5)) * rename in app listener keys ([customerio#164](https://github.com/nunofgs/customerio-android/issues/164)) ([f540eaf](f540eaf)) * set gist user token incase identifier exists ([customerio#162](https://github.com/nunofgs/customerio-android/issues/162)) ([44cc4d1](44cc4d1)) * timestamp conversion issue ([customerio#37](https://github.com/nunofgs/customerio-android/issues/37)) ([d986f54](d986f54)) * track opens fcm notification payload ([ab3cd18](ab3cd18)) * updated host endpoints ([customerio#53](https://github.com/nunofgs/customerio-android/issues/53)) ([efe2b9e](efe2b9e)) * updated json adapter usage to safe parsing ([f72280b](f72280b)) * upgrade dependencies ([customerio#146](https://github.com/nunofgs/customerio-android/issues/146)) ([6da8b8d](6da8b8d)) * user agent ([customerio#42](https://github.com/nunofgs/customerio-android/issues/42)) ([37af83e](37af83e)) * user agent client support in preferences repo ([454a18e](454a18e)) * version bump for gist sdk to resolve messaging not showing bug ([05dad42](05dad42))
## 1.0.0 (2023-02-13) ### ⚠ BREAKING CHANGES * android 12 deep link fix * get current FCM token on SDK startup * register device attributes when set * create background queue to make API synchronous ### Features * add device and profile attribute setters ([789f09f](789f09f)) * add device_manufacturer device attribute ([6a60f39](6a60f39)) * add setting a in-app event listener ([customerio#147](https://github.com/nunofgs/customerio-android/issues/147)) ([5fd9559](5fd9559)) * added option to customize push notification from app ([68010f8](68010f8)) * added shared instance for independent components ([70fa8cd](70fa8cd)) * added support for custom track url ([b61a64b](b61a64b)) * added support for device attributes ([customerio#71](https://github.com/nunofgs/customerio-android/issues/71)) ([5fedf26](5fedf26)) * added support to modify notification small icon ([b93c2dc](b93c2dc)) * automatic screen tracking ([customerio#52](https://github.com/nunofgs/customerio-android/issues/52)) ([8f95ebb](8f95ebb)) * changes for react native package ([2f20ac3](2f20ac3)) * create background queue to make API synchronous ([2524460](2524460)) * delete expired background queue tasks ([8dca8b7](8dca8b7)) * event tracking, identify customer ([customerio#29](https://github.com/nunofgs/customerio-android/issues/29)) ([5181268](5181268)) * get current FCM token on SDK startup ([dda443d](dda443d)) * in app sdk ([1036c80](1036c80)) * in-app feature no longer requires orgId ([customerio#163](https://github.com/nunofgs/customerio-android/issues/163)) ([fc2a08e](fc2a08e)) * manual screen tracking ([customerio#51](https://github.com/nunofgs/customerio-android/issues/51)) ([213a278](213a278)) * Push notification ([customerio#31](https://github.com/nunofgs/customerio-android/issues/31)) ([c639802](c639802)) * register device attributes when set ([0f5159e](0f5159e)) * Rich push support ([customerio#34](https://github.com/nunofgs/customerio-android/issues/34)) ([2480127](2480127)) * sdk initialization re-architecture ([9e21960](9e21960)) * set log level via SDK config ([81eea4e](81eea4e)) * support for custom device attributes and config ([customerio#77](https://github.com/nunofgs/customerio-android/issues/77)) ([a7dbaba](a7dbaba)) * updated client to support react native user agent ([7588526](7588526)) ### Bug Fixes * added alternative route to fetch screen name for automatic tracking ([customerio#92](https://github.com/nunofgs/customerio-android/issues/92)) ([37a20b5](37a20b5)) * added java compatibility in public constructors and methods ([2bb73be](2bb73be)) * added java compatibility in public constructors and methods ([acdec46](acdec46)) * added support for big decimal ([customerio#56](https://github.com/nunofgs/customerio-android/issues/56)) ([58c791b](58c791b)) * allow http requests in host app ([customerio#74](https://github.com/nunofgs/customerio-android/issues/74)) ([1035648](1035648)) * android 12 deep link fix ([fd7ae28](fd7ae28)) * cio sdk version attribute using client value ([bb90f35](bb90f35)) * code cleanup ([c651ee6](c651ee6)) * crash using invalid characters in HTTP header ([customerio#75](https://github.com/nunofgs/customerio-android/issues/75)) ([81a065e](81a065e)) * delete device token when clear identify ([72f9753](72f9753)) * deploy code script commands ([customerio#124](https://github.com/nunofgs/customerio-android/issues/124)) ([fe817d1](fe817d1)) * events are tracked to identified customer ([71634ed](71634ed)) * in-app messages instant delivery ([customerio#150](https://github.com/nunofgs/customerio-android/issues/150)) ([a6dcf3c](a6dcf3c)) * in-app messages stop delivering ([4027502](4027502)) * in-app system link causes app reopen ([6349081](6349081)) * moved shared wrapper code ([customerio#158](https://github.com/nunofgs/customerio-android/issues/158)) ([51af98f](51af98f)) * number parsing coverts to double ([customerio#57](https://github.com/nunofgs/customerio-android/issues/57)) ([72a80fe](72a80fe)) * parsing exception for expired tasks ([440bb13](440bb13)) * pro-guarding removal of enums ([customerio#39](https://github.com/nunofgs/customerio-android/issues/39)) ([dd27d35](dd27d35)) * queue attempts to run all tasks on each run ([e180dea](e180dea)) * register device tokens http request ([b1c6872](b1c6872)) * remove currentRoute parameter in in-app event listener ([customerio#159](https://github.com/nunofgs/customerio-android/issues/159)) ([688e4a5](688e4a5)) * rename in app listener keys ([customerio#164](https://github.com/nunofgs/customerio-android/issues/164)) ([f540eaf](f540eaf)) * set gist user token incase identifier exists ([customerio#162](https://github.com/nunofgs/customerio-android/issues/162)) ([44cc4d1](44cc4d1)) * timestamp conversion issue ([customerio#37](https://github.com/nunofgs/customerio-android/issues/37)) ([d986f54](d986f54)) * track opens fcm notification payload ([ab3cd18](ab3cd18)) * updated host endpoints ([customerio#53](https://github.com/nunofgs/customerio-android/issues/53)) ([efe2b9e](efe2b9e)) * updated json adapter usage to safe parsing ([f72280b](f72280b)) * upgrade dependencies ([customerio#146](https://github.com/nunofgs/customerio-android/issues/146)) ([6da8b8d](6da8b8d)) * user agent ([customerio#42](https://github.com/nunofgs/customerio-android/issues/42)) ([37af83e](37af83e)) * user agent client support in preferences repo ([454a18e](454a18e)) * version bump for gist sdk to resolve messaging not showing bug ([05dad42](05dad42))
## 1.0.0 (2023-02-13) ### ⚠ BREAKING CHANGES * android 12 deep link fix * get current FCM token on SDK startup * register device attributes when set * create background queue to make API synchronous ### Features * add device and profile attribute setters ([789f09f](789f09f)) * add device_manufacturer device attribute ([6a60f39](6a60f39)) * add setting a in-app event listener ([customerio#147](https://github.com/nunofgs/customerio-android/issues/147)) ([5fd9559](5fd9559)) * added option to customize push notification from app ([68010f8](68010f8)) * added shared instance for independent components ([70fa8cd](70fa8cd)) * added support for custom track url ([b61a64b](b61a64b)) * added support for device attributes ([customerio#71](https://github.com/nunofgs/customerio-android/issues/71)) ([5fedf26](5fedf26)) * added support to modify notification small icon ([b93c2dc](b93c2dc)) * automatic screen tracking ([customerio#52](https://github.com/nunofgs/customerio-android/issues/52)) ([8f95ebb](8f95ebb)) * changes for react native package ([2f20ac3](2f20ac3)) * create background queue to make API synchronous ([2524460](2524460)) * delete expired background queue tasks ([8dca8b7](8dca8b7)) * event tracking, identify customer ([customerio#29](https://github.com/nunofgs/customerio-android/issues/29)) ([5181268](5181268)) * get current FCM token on SDK startup ([dda443d](dda443d)) * in app sdk ([1036c80](1036c80)) * in-app feature no longer requires orgId ([customerio#163](https://github.com/nunofgs/customerio-android/issues/163)) ([fc2a08e](fc2a08e)) * manual screen tracking ([customerio#51](https://github.com/nunofgs/customerio-android/issues/51)) ([213a278](213a278)) * Push notification ([customerio#31](https://github.com/nunofgs/customerio-android/issues/31)) ([c639802](c639802)) * register device attributes when set ([0f5159e](0f5159e)) * Rich push support ([customerio#34](https://github.com/nunofgs/customerio-android/issues/34)) ([2480127](2480127)) * sdk initialization re-architecture ([9e21960](9e21960)) * set log level via SDK config ([81eea4e](81eea4e)) * support for custom device attributes and config ([customerio#77](https://github.com/nunofgs/customerio-android/issues/77)) ([a7dbaba](a7dbaba)) * updated client to support react native user agent ([7588526](7588526)) ### Bug Fixes * added alternative route to fetch screen name for automatic tracking ([customerio#92](https://github.com/nunofgs/customerio-android/issues/92)) ([37a20b5](37a20b5)) * added java compatibility in public constructors and methods ([2bb73be](2bb73be)) * added java compatibility in public constructors and methods ([acdec46](acdec46)) * added support for big decimal ([customerio#56](https://github.com/nunofgs/customerio-android/issues/56)) ([58c791b](58c791b)) * allow http requests in host app ([customerio#74](https://github.com/nunofgs/customerio-android/issues/74)) ([1035648](1035648)) * android 12 deep link fix ([fd7ae28](fd7ae28)) * cio sdk version attribute using client value ([bb90f35](bb90f35)) * code cleanup ([c651ee6](c651ee6)) * crash using invalid characters in HTTP header ([customerio#75](https://github.com/nunofgs/customerio-android/issues/75)) ([81a065e](81a065e)) * delete device token when clear identify ([72f9753](72f9753)) * deploy code script commands ([customerio#124](https://github.com/nunofgs/customerio-android/issues/124)) ([fe817d1](fe817d1)) * events are tracked to identified customer ([71634ed](71634ed)) * in-app messages instant delivery ([customerio#150](https://github.com/nunofgs/customerio-android/issues/150)) ([a6dcf3c](a6dcf3c)) * in-app messages stop delivering ([4027502](4027502)) * in-app system link causes app reopen ([6349081](6349081)) * moved shared wrapper code ([customerio#158](https://github.com/nunofgs/customerio-android/issues/158)) ([51af98f](51af98f)) * number parsing coverts to double ([customerio#57](https://github.com/nunofgs/customerio-android/issues/57)) ([72a80fe](72a80fe)) * parsing exception for expired tasks ([440bb13](440bb13)) * pro-guarding removal of enums ([customerio#39](https://github.com/nunofgs/customerio-android/issues/39)) ([dd27d35](dd27d35)) * queue attempts to run all tasks on each run ([e180dea](e180dea)) * register device tokens http request ([b1c6872](b1c6872)) * remove currentRoute parameter in in-app event listener ([customerio#159](https://github.com/nunofgs/customerio-android/issues/159)) ([688e4a5](688e4a5)) * rename in app listener keys ([customerio#164](https://github.com/nunofgs/customerio-android/issues/164)) ([f540eaf](f540eaf)) * set gist user token incase identifier exists ([customerio#162](https://github.com/nunofgs/customerio-android/issues/162)) ([44cc4d1](44cc4d1)) * timestamp conversion issue ([customerio#37](https://github.com/nunofgs/customerio-android/issues/37)) ([d986f54](d986f54)) * track opens fcm notification payload ([ab3cd18](ab3cd18)) * updated host endpoints ([customerio#53](https://github.com/nunofgs/customerio-android/issues/53)) ([efe2b9e](efe2b9e)) * updated json adapter usage to safe parsing ([f72280b](f72280b)) * upgrade dependencies ([customerio#146](https://github.com/nunofgs/customerio-android/issues/146)) ([6da8b8d](6da8b8d)) * user agent ([customerio#42](https://github.com/nunofgs/customerio-android/issues/42)) ([37af83e](37af83e)) * user agent client support in preferences repo ([454a18e](454a18e)) * version bump for gist sdk to resolve messaging not showing bug ([05dad42](05dad42))
## 1.0.0 (2023-02-13) ### ⚠ BREAKING CHANGES * android 12 deep link fix * get current FCM token on SDK startup * register device attributes when set * create background queue to make API synchronous ### Features * add device and profile attribute setters ([789f09f](789f09f)) * add device_manufacturer device attribute ([6a60f39](6a60f39)) * add setting a in-app event listener ([customerio#147](https://github.com/nunofgs/customerio-android/issues/147)) ([5fd9559](5fd9559)) * added option to customize push notification from app ([68010f8](68010f8)) * added shared instance for independent components ([70fa8cd](70fa8cd)) * added support for custom track url ([b61a64b](b61a64b)) * added support for device attributes ([customerio#71](https://github.com/nunofgs/customerio-android/issues/71)) ([5fedf26](5fedf26)) * added support to modify notification small icon ([b93c2dc](b93c2dc)) * automatic screen tracking ([customerio#52](https://github.com/nunofgs/customerio-android/issues/52)) ([8f95ebb](8f95ebb)) * changes for react native package ([2f20ac3](2f20ac3)) * create background queue to make API synchronous ([2524460](2524460)) * delete expired background queue tasks ([8dca8b7](8dca8b7)) * event tracking, identify customer ([customerio#29](https://github.com/nunofgs/customerio-android/issues/29)) ([5181268](5181268)) * get current FCM token on SDK startup ([dda443d](dda443d)) * in app sdk ([1036c80](1036c80)) * in-app feature no longer requires orgId ([customerio#163](https://github.com/nunofgs/customerio-android/issues/163)) ([fc2a08e](fc2a08e)) * manual screen tracking ([customerio#51](https://github.com/nunofgs/customerio-android/issues/51)) ([213a278](213a278)) * Push notification ([customerio#31](https://github.com/nunofgs/customerio-android/issues/31)) ([c639802](c639802)) * register device attributes when set ([0f5159e](0f5159e)) * Rich push support ([customerio#34](https://github.com/nunofgs/customerio-android/issues/34)) ([2480127](2480127)) * sdk initialization re-architecture ([9e21960](9e21960)) * set log level via SDK config ([81eea4e](81eea4e)) * support for custom device attributes and config ([customerio#77](https://github.com/nunofgs/customerio-android/issues/77)) ([a7dbaba](a7dbaba)) * updated client to support react native user agent ([7588526](7588526)) ### Bug Fixes * added alternative route to fetch screen name for automatic tracking ([customerio#92](https://github.com/nunofgs/customerio-android/issues/92)) ([37a20b5](37a20b5)) * added java compatibility in public constructors and methods ([2bb73be](2bb73be)) * added java compatibility in public constructors and methods ([acdec46](acdec46)) * added support for big decimal ([customerio#56](https://github.com/nunofgs/customerio-android/issues/56)) ([58c791b](58c791b)) * allow http requests in host app ([customerio#74](https://github.com/nunofgs/customerio-android/issues/74)) ([1035648](1035648)) * android 12 deep link fix ([fd7ae28](fd7ae28)) * cio sdk version attribute using client value ([bb90f35](bb90f35)) * code cleanup ([c651ee6](c651ee6)) * crash using invalid characters in HTTP header ([customerio#75](https://github.com/nunofgs/customerio-android/issues/75)) ([81a065e](81a065e)) * delete device token when clear identify ([72f9753](72f9753)) * deploy code script commands ([customerio#124](https://github.com/nunofgs/customerio-android/issues/124)) ([fe817d1](fe817d1)) * events are tracked to identified customer ([71634ed](71634ed)) * in-app messages instant delivery ([customerio#150](https://github.com/nunofgs/customerio-android/issues/150)) ([a6dcf3c](a6dcf3c)) * in-app messages stop delivering ([4027502](4027502)) * in-app system link causes app reopen ([6349081](6349081)) * moved shared wrapper code ([customerio#158](https://github.com/nunofgs/customerio-android/issues/158)) ([51af98f](51af98f)) * number parsing coverts to double ([customerio#57](https://github.com/nunofgs/customerio-android/issues/57)) ([72a80fe](72a80fe)) * parsing exception for expired tasks ([440bb13](440bb13)) * pro-guarding removal of enums ([customerio#39](https://github.com/nunofgs/customerio-android/issues/39)) ([dd27d35](dd27d35)) * queue attempts to run all tasks on each run ([e180dea](e180dea)) * register device tokens http request ([b1c6872](b1c6872)) * remove currentRoute parameter in in-app event listener ([customerio#159](https://github.com/nunofgs/customerio-android/issues/159)) ([688e4a5](688e4a5)) * rename in app listener keys ([customerio#164](https://github.com/nunofgs/customerio-android/issues/164)) ([f540eaf](f540eaf)) * set gist user token incase identifier exists ([customerio#162](https://github.com/nunofgs/customerio-android/issues/162)) ([44cc4d1](44cc4d1)) * timestamp conversion issue ([customerio#37](https://github.com/nunofgs/customerio-android/issues/37)) ([d986f54](d986f54)) * track opens fcm notification payload ([ab3cd18](ab3cd18)) * updated host endpoints ([customerio#53](https://github.com/nunofgs/customerio-android/issues/53)) ([efe2b9e](efe2b9e)) * updated json adapter usage to safe parsing ([f72280b](f72280b)) * upgrade dependencies ([customerio#146](https://github.com/nunofgs/customerio-android/issues/146)) ([6da8b8d](6da8b8d)) * user agent ([customerio#42](https://github.com/nunofgs/customerio-android/issues/42)) ([37af83e](37af83e)) * user agent client support in preferences repo ([454a18e](454a18e)) * version bump for gist sdk to resolve messaging not showing bug ([05dad42](05dad42))