com.onesignal.unity.ios 5.0.6 → 5.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  <dependencies>
2
2
  <iosPods>
3
- <iosPod name="OneSignalXCFramework" version="5.1.0" addToAllTargets="true" />
3
+ <iosPod name="OneSignalXCFramework" version="5.1.3" addToAllTargets="true" />
4
4
  </iosPods>
5
5
  </dependencies>
@@ -31,6 +31,7 @@
31
31
  #import "OneSignalBridgeUtil.h"
32
32
 
33
33
  typedef void (*StateListenerDelegate)(const char* current, const char* previous);
34
+ typedef void (*UserStateListenerDelegate)(const char* current);
34
35
 
35
36
  /*
36
37
  * Helpers
@@ -78,6 +79,45 @@ typedef void (*StateListenerDelegate)(const char* current, const char* previous)
78
79
 
79
80
  @end
80
81
 
82
+ /*
83
+ * User state observer singleton for global callbacks
84
+ */
85
+
86
+ @interface OneSignalUserStateObserver : NSObject <OSUserStateObserver>
87
+
88
+ + (instancetype) sharedUserObserver;
89
+ @property UserStateListenerDelegate userStateDelegate;
90
+
91
+ @end
92
+
93
+ @implementation OneSignalUserStateObserver
94
+
95
+ + (instancetype) sharedUserObserver {
96
+ static dispatch_once_t pred = 0;
97
+ static id _sharedObject = nil;
98
+ dispatch_once(&pred, ^{
99
+ _sharedObject = [[self alloc] init];
100
+ });
101
+ return _sharedObject;
102
+ }
103
+
104
+ - (instancetype) init {
105
+ if (self = [super init]) {
106
+ [OneSignal.User addObserver:self];
107
+ }
108
+
109
+ return self;
110
+ }
111
+
112
+ - (void)onUserStateDidChangeWithState:(OSUserChangedState*)state {
113
+ if (_userStateDelegate != nil) {
114
+ auto curr = oneSignalJsonStringFromDictionary([[state current] jsonRepresentation]);
115
+ _userStateDelegate(curr);
116
+ }
117
+ }
118
+
119
+ @end
120
+
81
121
  /*
82
122
  * Bridge methods
83
123
  * We use strdup because Unity attempts to free the memory after we return the value
@@ -160,11 +200,31 @@ extern "C" {
160
200
  [OneSignal.User removeTags:tags];
161
201
  }
162
202
 
203
+ const char* _oneSignalUserGetOneSignalId(){
204
+ if (OneSignal.User.onesignalId == NULL) {
205
+ return NULL;
206
+ }
207
+ return strdup([OneSignal.User.onesignalId UTF8String]);
208
+ }
209
+
210
+ const char* _oneSignalUserGetExternalId(){
211
+ if (OneSignal.User.externalId == NULL) {
212
+ return NULL;
213
+ }
214
+ return strdup([OneSignal.User.externalId UTF8String]);
215
+ }
216
+
163
217
  const char* _oneSignalPushSubscriptionGetId() {
218
+ if (OneSignal.User.pushSubscription.id == NULL) {
219
+ return NULL;
220
+ }
164
221
  return strdup([OneSignal.User.pushSubscription.id UTF8String]);
165
222
  }
166
223
 
167
224
  const char* _oneSignalPushSubscriptionGetToken() {
225
+ if (OneSignal.User.pushSubscription.token == NULL) {
226
+ return NULL;
227
+ }
168
228
  return strdup([OneSignal.User.pushSubscription.token UTF8String]);
169
229
  }
170
230
 
@@ -183,4 +243,8 @@ extern "C" {
183
243
  void _oneSignalPushSubscriptionAddStateChangedCallback(StateListenerDelegate callback) {
184
244
  [[OneSignalUserObserver sharedUserObserver] setPushSubscriptionDelegate:callback];
185
245
  }
246
+
247
+ void _oneSignalUserAddStateChangedCallback(UserStateListenerDelegate callback) {
248
+ [[OneSignalUserStateObserver sharedUserObserver] setUserStateDelegate:callback];
249
+ }
186
250
  }
@@ -95,7 +95,7 @@ static bool swizzled = false;
95
95
 
96
96
  - (BOOL)oneSignalApplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
97
97
  [OneSignalWrapper setSdkType:@"unity"];
98
- [OneSignalWrapper setSdkVersion:@"050006"];
98
+ [OneSignalWrapper setSdkVersion:@"050101"];
99
99
  [OneSignal initialize:nil withLaunchOptions:launchOptions];
100
100
 
101
101
  if ([self respondsToSelector:@selector(oneSignalApplication:didFinishLaunchingWithOptions:)])
@@ -27,14 +27,18 @@
27
27
 
28
28
 
29
29
  using UnityEngine;
30
+ using System;
30
31
  using System.Collections.Generic;
31
32
  using System.Runtime.InteropServices;
32
33
  using OneSignalSDK.User;
34
+ using OneSignalSDK.User.Internal;
33
35
  using OneSignalSDK.User.Models;
34
36
  using OneSignalSDK.iOS.User.Models;
35
37
 
36
38
  namespace OneSignalSDK.iOS.User {
37
39
  internal sealed class iOSUserManager : IUserManager {
40
+ [DllImport("__Internal")] private static extern string _oneSignalUserGetOneSignalId();
41
+ [DllImport("__Internal")] private static extern string _oneSignalUserGetExternalId();
38
42
  [DllImport("__Internal")] private static extern void _oneSignalUserSetLanguage(string languageCode);
39
43
  [DllImport("__Internal")] private static extern void _oneSignalUserAddAlias(string aliasLabel, string aliasId);
40
44
  [DllImport("__Internal")] private static extern void _oneSignalUserAddAliases(string aliasesJson);
@@ -49,13 +53,29 @@ namespace OneSignalSDK.iOS.User {
49
53
  [DllImport("__Internal")] private static extern void _oneSignalUserAddTags(string tagsJson);
50
54
  [DllImport("__Internal")] private static extern void _oneSignalUserRemoveTag(string key);
51
55
  [DllImport("__Internal")] private static extern void _oneSignalUserRemoveTags(string tagsJson);
56
+ [DllImport("__Internal")] private static extern void _oneSignalUserAddStateChangedCallback(UserStateListenerDelegate callback);
57
+
58
+ public delegate void UserStateListenerDelegate(string current);
59
+
60
+ public event EventHandler<UserStateChangedEventArgs> Changed;
52
61
 
53
62
  private iOSPushSubscription _pushSubscription;
63
+
64
+ private static iOSUserManager _instance;
54
65
 
55
66
  public iOSUserManager() {
67
+ _instance = this;
56
68
  _pushSubscription = new iOSPushSubscription();
57
69
  }
58
70
 
71
+ public string OneSignalId {
72
+ get => _oneSignalUserGetOneSignalId();
73
+ }
74
+
75
+ public string ExternalId {
76
+ get => _oneSignalUserGetExternalId();
77
+ }
78
+
59
79
  public IPushSubscription PushSubscription {
60
80
  get => _pushSubscription;
61
81
  }
@@ -109,6 +129,21 @@ namespace OneSignalSDK.iOS.User {
109
129
 
110
130
  public void Initialize() {
111
131
  _pushSubscription.Initialize();
132
+ _oneSignalUserAddStateChangedCallback(_onUserStateChanged);
133
+ }
134
+
135
+ [AOT.MonoPInvokeCallback(typeof(UserStateListenerDelegate))]
136
+ private static void _onUserStateChanged(string current) {
137
+ var curr = JsonUtility.FromJson<UserState>(current);
138
+
139
+ UserChangedState userChangedState = new UserChangedState(curr);
140
+ UserStateChangedEventArgs args = new UserStateChangedEventArgs(userChangedState);
141
+
142
+ EventHandler<UserStateChangedEventArgs> handler = _instance.Changed;
143
+ if (handler != null)
144
+ {
145
+ UnityMainThreadDispatch.Post(state => handler(_instance, args));
146
+ }
112
147
  }
113
148
  }
114
149
  }
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "com.onesignal.unity.ios",
3
3
  "displayName": "OneSignal Unity SDK - iOS",
4
- "version": "5.0.6",
4
+ "version": "5.1.1",
5
5
  "unity": "2018.4",
6
6
  "description": "OneSignal is the market leader in customer engagement, powering mobile push, web push, email, and in-app messages.",
7
7
  "dependencies": {
8
- "com.onesignal.unity.core": "5.0.6"
8
+ "com.onesignal.unity.core": "5.1.1"
9
9
  },
10
10
  "keywords": [
11
11
  "push-notifications",