Skip to content

Commit

Permalink
Add a test case to test the ID observer
Browse files Browse the repository at this point in the history
  • Loading branch information
jinliu9508 committed Feb 6, 2024
1 parent b63daa4 commit 81701d6
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
using OneSignalSDK;
using OneSignalSDK.Notifications;
using OneSignalSDK.InAppMessages;
using OneSignalSDK.User;
using OneSignalSDK.User.Models;
using OneSignalSDK.Debug.Models;
using OneSignalSDK.Debug.Utilities;
Expand Down Expand Up @@ -159,6 +160,7 @@ private void Start() {

// Setup the below to listen for and respond to state changes
OneSignal.User.PushSubscription.Changed += _pushSubscriptionChanged;
OneSignal.User.Changed += _userStateChanged;
}

/*
Expand Down Expand Up @@ -211,6 +213,11 @@ private void _pushSubscriptionChanged(object sender, PushSubscriptionChangedEven
_log($"Push subscription changed to current: {JsonUtility.ToJson(e.State.Current)}");
}

private void _userStateChanged(object sender, UserStateChangedEventArgs e) {
_log($"onesignalId changed : {JsonUtility.ToJson(e.State.onesignalId)}");
_log($"externalId changed : {JsonUtility.ToJson(e.State.externalId)}");
}

/*
* SDK setup
*/
Expand Down
2 changes: 2 additions & 0 deletions com.onesignal.unity.android/Runtime/AndroidUserManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ namespace OneSignalSDK.Android.User {
internal sealed class AndroidUserManager : IUserManager {
private readonly AndroidJavaObject _user;
private AndroidPushSubscription _pushSubscription;
public event EventHandler<UserStateChangedEventArgs> Changed;

public AndroidUserManager(AndroidJavaClass sdkClass) {
_user = sdkClass.CallStatic<AndroidJavaObject>("getUser");
Expand Down Expand Up @@ -102,6 +103,7 @@ public void RemoveSms(string sms)

public void Initialize() {
_pushSubscription.Initialize();
_user.Call("addObserver", new InternalUserChangedHandler(this));
}

private sealed class InternalUserChangedHandler : OneSignalAndroidJavaProxy {
Expand Down
3 changes: 3 additions & 0 deletions com.onesignal.unity.core/Editor/Platform/UserManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
* THE SOFTWARE.
*/

using System;
using System.Collections.Generic;
using OneSignalSDK.User.Models;

Expand All @@ -38,6 +39,8 @@ public string externalId {
get => "";
}

public event EventHandler<UserStateChangedEventArgs> Changed;

private PushSubscription _subscription = new PushSubscription();

public IPushSubscription PushSubscription {
Expand Down
8 changes: 8 additions & 0 deletions com.onesignal.unity.core/Runtime/User/IUserManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@
* THE SOFTWARE.
*/

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
using OneSignalSDK.User.Models;

namespace OneSignalSDK.User {
Expand Down Expand Up @@ -59,6 +62,11 @@ public interface IUserManager {
/// </summary>
string externalId { get; }

/// <summary>
/// When onesignalId or externalId has changed
/// </summary>
event EventHandler<UserStateChangedEventArgs> Changed;

/// <summary>
/// The 2-character language either as a detected language or explicitly set for this user. See
/// https://documentation.onesignal.com/docs/language-localization#what-languages-are-supported
Expand Down
14 changes: 13 additions & 1 deletion com.onesignal.unity.core/Runtime/User/Models/IUserState.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,19 @@

using System;

namespace OneSignalSDK.User.Models {
namespace OneSignalSDK.User {
/// <summary>
/// Several states associated with the SDK can be changed in and outside of the application.
/// </summary>
public class UserStateChangedEventArgs : EventArgs
{
public IUserState State { get; }

public UserStateChangedEventArgs(IUserState state) {
State = state;
}
}

public interface IUserState {
/// <summary>
/// The unique identifier for your OneSignal account. This will be an empty string until the
Expand Down
11 changes: 11 additions & 0 deletions com.onesignal.unity.core/Runtime/User/Models/IUserState.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 81701d6

Please sign in to comment.