Skip to content

Commit ce67625

Browse files
authored
Merge pull request #1766 from OneSignal/user-model/iam-events
[User Model] Rename IAM event listeners
2 parents ede53a0 + c77c903 commit ce67625

29 files changed

+411
-330
lines changed

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@
99

1010
import com.onesignal.OneSignal;
1111
import com.onesignal.inAppMessages.IInAppMessage;
12-
import com.onesignal.inAppMessages.IInAppMessageClickHandler;
13-
import com.onesignal.inAppMessages.IInAppMessageClickResult;
14-
import com.onesignal.inAppMessages.IInAppMessageLifecycleHandler;
12+
import com.onesignal.inAppMessages.IInAppMessageClickListener;
13+
import com.onesignal.inAppMessages.IInAppMessageClickEvent;
14+
import com.onesignal.inAppMessages.IInAppMessageDidDismissEvent;
15+
import com.onesignal.inAppMessages.IInAppMessageDidDisplayEvent;
16+
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener;
1517
import com.onesignal.debug.LogLevel;
18+
import com.onesignal.inAppMessages.IInAppMessageWillDismissEvent;
19+
import com.onesignal.inAppMessages.IInAppMessageWillDisplayEvent;
1620
import com.onesignal.notifications.IDisplayableNotification;
1721
import com.onesignal.notifications.INotificationLifecycleListener;
1822
import com.onesignal.notifications.INotificationWillDisplayEvent;
@@ -50,31 +54,31 @@ public void onCreate() {
5054
OneSignalNotificationSender.setAppId(appId);
5155
OneSignal.initWithContext(this, appId);
5256

53-
OneSignal.getInAppMessages().setInAppMessageLifecycleHandler(new IInAppMessageLifecycleHandler() {
57+
OneSignal.getInAppMessages().addLifecycleListener(new IInAppMessageLifecycleListener() {
5458
@Override
55-
public void onWillDisplayInAppMessage(@NonNull IInAppMessage message) {
59+
public void onWillDisplay(@NonNull IInAppMessageWillDisplayEvent event) {
5660
Log.v(Tag.LOG_TAG, "onWillDisplayInAppMessage");
5761
}
5862

5963
@Override
60-
public void onDidDisplayInAppMessage(@NonNull IInAppMessage message) {
64+
public void onDidDisplay(@NonNull IInAppMessageDidDisplayEvent event) {
6165
Log.v(Tag.LOG_TAG, "onDidDisplayInAppMessage");
6266
}
6367

6468
@Override
65-
public void onWillDismissInAppMessage(@NonNull IInAppMessage message) {
69+
public void onWillDismiss(@NonNull IInAppMessageWillDismissEvent event) {
6670
Log.v(Tag.LOG_TAG, "onWillDismissInAppMessage");
6771
}
6872

6973
@Override
70-
public void onDidDismissInAppMessage(@NonNull IInAppMessage message) {
74+
public void onDidDismiss(@NonNull IInAppMessageDidDismissEvent event) {
7175
Log.v(Tag.LOG_TAG, "onDidDismissInAppMessage");
7276
}
7377
});
7478

75-
OneSignal.getInAppMessages().setInAppMessageClickHandler(new IInAppMessageClickHandler() {
79+
OneSignal.getInAppMessages().addClickListener(new IInAppMessageClickListener() {
7680
@Override
77-
public void inAppMessageClicked(@Nullable IInAppMessageClickResult result) {
81+
public void onClick(@Nullable IInAppMessageClickEvent event) {
7882
Log.v(Tag.LOG_TAG, "INotificationClickListener.inAppMessageClicked");
7983
}
8084
});

MIGRATION_GUIDE.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,10 @@ The In App Messages namespace is accessible via `OneSignal.InAppMessages` (in Ko
292292
| `fun removeTrigger(key: String)` | `void removeTrigger(String key)` | *Remove the trigger with the provided key from the current user.* |
293293
| `fun removeTriggers(keys: Collection<String>)` | `void removeTriggers(Collection<String> keys)` | *Remove multiple triggers from the current user.* |
294294
| `fun clearTriggers()` | `void clearTriggers()` | *Clear all triggers from the current user.* |
295-
| `fun setInAppMessageLifecycleHandler(handler: IInAppMessageLifecycleHandler?)` | `void setInAppMessageLifecycleHandler(IInAppMessageLifecycleHandler? handler)` | *Set the IAM lifecycle handler.* |
296-
| `fun setInAppMessageClickHandler(handler: IInAppMessageClickHandler?)` | `void setInAppMessageClickHandler(IInAppMessageClickHandler? handler)` | *Set the IAM click handler.* |
295+
| `fun addLifecycleListener(listener: IInAppMessageLifecycleListener)` | `void addLifecycleListener(IInAppMessageLifecycleListener listener)` | *Add a lifecycle listener that will run whenever an In App Message lifecycle event occurs.* |
296+
| `fun removeLifecycleListener(listener: IInAppMessageLifecycleListener)` | `void removeLifecycleListener(IInAppMessageLifecycleListener listener)` | *Remove a lifecycle listener that has been previously added.* |
297+
| `fun addClickListener(listener: IInAppMessageClickListener)` | `void addClickListener(IInAppMessageClickListener listener)` | *Add a click listener that will run whenever an In App Message is clicked on by the user.* |
298+
| `fun removeClickListener(listener: IInAppMessageClickListener)` | `void removeClickListener(IInAppMessageClickListener listener)` | *Remove a click listener that has been previously added.* |
297299

298300

299301
**Debug Namespace**

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/IInAppMessageAction.kt

Lines changed: 0 additions & 32 deletions
This file was deleted.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.onesignal.inAppMessages
2+
3+
/**
4+
* The data provided to [IInAppMessageClickListener.onClick] when an IAM
5+
* has been clicked by the user.
6+
*/
7+
interface IInAppMessageClickEvent {
8+
/**
9+
* The IAM that was clicked by the user.
10+
*/
11+
val message: IInAppMessage
12+
13+
/**
14+
* The result of the user clicking the IAM.
15+
*/
16+
val result: IInAppMessageClickResult
17+
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/IInAppMessageClickHandler.kt

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.onesignal.inAppMessages
2+
3+
interface IInAppMessageClickListener {
4+
/**
5+
* Fires when a user clicks on a clickable element in the IAM.
6+
*
7+
* @param event The [IInAppMessageClickEvent] with the user's response and properties of this message.
8+
*/
9+
fun onClick(event: IInAppMessageClickEvent)
10+
}
Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,28 @@
11
package com.onesignal.inAppMessages
22

33
/**
4-
* The data provided to [IInAppMessageClickHandler.inAppMessageClicked] when an IAM
5-
* has been clicked by the user.
4+
* An IAM action represents an action performed by the user in reaction to an IAM
5+
* being displayed.
66
*/
77
interface IInAppMessageClickResult {
88
/**
9-
* The IAM that was clicked by the user.
9+
* An optional action ID that defines the action taken.
10+
* See [Click Actions | OneSignal Docs](https://documentation.onesignal.com/docs/iam-click-actions#how-to-collect-custom-click-actions).
1011
*/
11-
val message: IInAppMessage
12+
val actionId: String?
1213

1314
/**
14-
* The action the user took to open the message.
15+
* Determines where the URL is opened, ie. Default browser.
1516
*/
16-
val action: IInAppMessageAction
17+
val urlTarget: InAppMessageActionUrlType?
18+
19+
/**
20+
* An optional URL that opens when the action takes place
21+
*/
22+
val url: String?
23+
24+
/**
25+
* Determines if tapping on the element is closing the IAM.
26+
*/
27+
val closingMessage: Boolean
1728
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.onesignal.inAppMessages
2+
3+
/**
4+
* The event passed into [IInAppMessageLifecycleListener.onDidDismiss], it provides access
5+
* to the In App Message that has been dismissed.
6+
*/
7+
interface IInAppMessageDidDismissEvent {
8+
9+
/**
10+
* The In App Message that has been dismissed.
11+
*/
12+
val message: IInAppMessage
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.onesignal.inAppMessages
2+
3+
/**
4+
* The event passed into [IInAppMessageLifecycleListener.onDidDisplay], it provides access
5+
* to the In App Message that has been displayed.
6+
*/
7+
interface IInAppMessageDidDisplayEvent {
8+
9+
/**
10+
* The In App Message that has been displayed.
11+
*/
12+
val message: IInAppMessage
13+
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/IInAppMessageLifecycleHandler.kt

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.onesignal.inAppMessages
2+
3+
/**
4+
* The lifecycle handler interface that should be implemented and provided as input
5+
* to [IInAppMessagesManager.addLifecycleListener]. This allows for the app developer
6+
* to gain insight during the IAM lifecycle process.
7+
*/
8+
interface IInAppMessageLifecycleListener {
9+
/**
10+
* Called before an IAM is about to display to the user.
11+
*
12+
* @param event The IAM will display event information.
13+
*/
14+
fun onWillDisplay(event: IInAppMessageWillDisplayEvent)
15+
16+
/**
17+
* Called after an IAM has been displayed to the user.
18+
*
19+
* @param event The IAM did display event information.
20+
*/
21+
fun onDidDisplay(event: IInAppMessageDidDisplayEvent)
22+
23+
/**
24+
* Called when the IAM is about to dismiss.
25+
*
26+
* @param event The IAM will dismiss event information.
27+
*/
28+
fun onWillDismiss(event: IInAppMessageWillDismissEvent)
29+
30+
/**
31+
* Called after an IAM has been dismissed.
32+
*
33+
* @param event The IAM did dismiss event information.
34+
*/
35+
fun onDidDismiss(event: IInAppMessageDidDismissEvent)
36+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.onesignal.inAppMessages
2+
3+
/**
4+
* The event passed into [IInAppMessageLifecycleListener.onWillDismiss], it provides access
5+
* to the In App Message to be dismissed.
6+
*/
7+
interface IInAppMessageWillDismissEvent {
8+
9+
/**
10+
* The In App Message that is to be dismissed.
11+
*/
12+
val message: IInAppMessage
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.onesignal.inAppMessages
2+
3+
/**
4+
* The event passed into [IInAppMessageLifecycleListener.onWillDisplay], it provides access
5+
* to the In App Message to be displayed.
6+
*/
7+
interface IInAppMessageWillDisplayEvent {
8+
9+
/**
10+
* The In App Message that is to be displayed.
11+
*/
12+
val message: IInAppMessage
13+
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/IInAppMessagesManager.kt

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,31 @@ interface IInAppMessagesManager {
6363
fun clearTriggers()
6464

6565
/**
66-
* Set the IAM lifecycle handler.
66+
* Add a lifecycle listener that will run whenever an In App Message lifecycle
67+
* event occurs.
6768
*
68-
* @param handler: The handler that will be called at various times throughout
69-
* the IAM lifecycle.
69+
* @param listener: The listener that is to be called when the event occurs.
7070
*/
71-
fun setInAppMessageLifecycleHandler(handler: IInAppMessageLifecycleHandler?)
71+
fun addLifecycleListener(listener: IInAppMessageLifecycleListener)
7272

7373
/**
74-
* Set the IAM click handler.
74+
* Remove a lifecycle listener that has been previously added.
7575
*
76-
* @param handler: The handler that will be called when the IAM has been
77-
* clicked.
76+
* @param listener The previously added listener that should be removed.
7877
*/
79-
fun setInAppMessageClickHandler(handler: IInAppMessageClickHandler?)
78+
fun removeLifecycleListener(listener: IInAppMessageLifecycleListener)
79+
80+
/**
81+
* Add a click listener that will run whenever an In App Message is clicked on by the user.
82+
*
83+
* @param listener The listener that is to be called when the event occurs.
84+
*/
85+
fun addClickListener(listener: IInAppMessageClickListener)
86+
87+
/**
88+
* Remove a click listener that has been previously added.
89+
*
90+
* @param listener The previously added listener that should be removed.
91+
*/
92+
fun removeClickListener(listener: IInAppMessageClickListener)
8093
}

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/InAppMessageActionUrlType.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ enum class InAppMessageActionUrlType(
2424
REPLACE_CONTENT("replacement"),
2525
;
2626

27+
fun toString(): String {
28+
return text
29+
}
30+
2731
companion object {
2832
fun fromString(text: String?): InAppMessageActionUrlType? {
2933
for (type in values()) {

OneSignalSDK/onesignal/core/src/main/java/com/onesignal/inAppMessages/internal/MisconfiguredIAMManager.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.onesignal.inAppMessages.internal
22

3-
import com.onesignal.inAppMessages.IInAppMessageClickHandler
4-
import com.onesignal.inAppMessages.IInAppMessageLifecycleHandler
3+
import com.onesignal.inAppMessages.IInAppMessageClickListener
4+
import com.onesignal.inAppMessages.IInAppMessageLifecycleListener
55
import com.onesignal.inAppMessages.IInAppMessagesManager
66

77
/**
@@ -18,8 +18,10 @@ internal class MisconfiguredIAMManager : IInAppMessagesManager {
1818
override fun removeTrigger(key: String) = throw EXCEPTION
1919
override fun removeTriggers(keys: Collection<String>) = throw EXCEPTION
2020
override fun clearTriggers() = throw EXCEPTION
21-
override fun setInAppMessageLifecycleHandler(handler: IInAppMessageLifecycleHandler?) = throw EXCEPTION
22-
override fun setInAppMessageClickHandler(handler: IInAppMessageClickHandler?) = throw EXCEPTION
21+
override fun addLifecycleListener(listener: IInAppMessageLifecycleListener) = throw EXCEPTION
22+
override fun removeLifecycleListener(listener: IInAppMessageLifecycleListener) = throw EXCEPTION
23+
override fun addClickListener(listener: IInAppMessageClickListener) = throw EXCEPTION
24+
override fun removeClickListener(listener: IInAppMessageClickListener) = throw EXCEPTION
2325

2426
companion object {
2527
private val EXCEPTION: Throwable get() = Exception("Must include gradle module com.onesignal:InAppMessages in order to use this functionality!")

0 commit comments

Comments
 (0)