Skip to content

Commit 1fbddcf

Browse files
authored
Merge pull request #1476 from OneSignal/identity_verification_get_iams
[JWT] Get In-App Messages from Server
2 parents 8694a4d + 0bc08eb commit 1fbddcf

File tree

54 files changed

+2927
-605
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+2927
-605
lines changed

iOS_SDK/OneSignalDevApp/OneSignalDevApp/AppDelegate.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
#import <UIKit/UIKit.h>
3232
#import <OneSignalFramework/OneSignalFramework.h>
3333

34-
@interface AppDelegate : UIResponder <UIApplicationDelegate, OSNotificationPermissionObserver, OSInAppMessageLifecycleListener, OSPushSubscriptionObserver, OSNotificationLifecycleListener, OSInAppMessageClickListener, OSNotificationClickListener, OSUserStateObserver>
34+
@interface AppDelegate : UIResponder <UIApplicationDelegate, OSNotificationPermissionObserver, OSInAppMessageLifecycleListener, OSPushSubscriptionObserver, OSNotificationLifecycleListener, OSInAppMessageClickListener, OSNotificationClickListener, OSUserStateObserver, OSUserJwtInvalidatedListener>
3535

3636
@property (strong, nonatomic) UIWindow *window;
3737

iOS_SDK/OneSignalDevApp/OneSignalDevApp/AppDelegate.m

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@ @implementation AppDelegate
4646

4747
OneSignalNotificationCenterDelegate *_notificationDelegate;
4848

49+
// ECM Should we ship these typedefs in OneSignalFramework.h to make them available to Objective C customers?
50+
typedef void (^JwtCompletionBlock)(NSString*);
51+
typedef void (^JwtExpiredBlock)(NSString *, JwtCompletionBlock);
52+
4953
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
5054

5155
// [FIRApp configure];
@@ -72,6 +76,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
7276
[OneSignal.User addObserver:self];
7377
[OneSignal.Notifications addPermissionObserver:self];
7478
[OneSignal.InAppMessages addClickListener:self];
79+
[OneSignal addUserJwtInvalidatedListener:self];
7580

7681
NSLog(@"UNUserNotificationCenter.delegate: %@", UNUserNotificationCenter.currentNotificationCenter.delegate);
7782

@@ -86,8 +91,8 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
8691
return YES;
8792
}
8893

89-
#define ONESIGNAL_APP_ID_DEFAULT @"STAGING_APP_HERE"
90-
#define ONESIGNAL_APP_ID_KEY_FOR_TESTING @"YOUR_APP_ID_HERE"
94+
#define ONESIGNAL_APP_ID_DEFAULT @"77e32082-ea27-42e3-a898-c72e141824ef"
95+
#define ONESIGNAL_APP_ID_KEY_FOR_TESTING @"77e32082-ea27-42e3-a898-c72e141824ef"
9196

9297
+ (NSString*)getOneSignalAppId {
9398
NSString* userDefinedAppId = [[NSUserDefaults standardUserDefaults] objectForKey:ONESIGNAL_APP_ID_KEY_FOR_TESTING];
@@ -121,6 +126,10 @@ - (void)onUserStateDidChangeWithState:(OSUserChangedState * _Nonnull)state {
121126
NSLog(@"Dev App onUserStateDidChangeWithState: %@", [state jsonRepresentation]);
122127
}
123128

129+
- (void)onUserJwtInvalidatedWithEvent:(OSUserJwtInvalidatedEvent * _Nonnull)event {
130+
NSLog(@"Dev App onUserJwtInvalidatedWithEvent: %@", [event jsonRepresentation]);
131+
}
132+
124133
#pragma mark OSInAppMessageDelegate
125134

126135
- (void)onClickInAppMessage:(OSInAppMessageClickEvent * _Nonnull)event {

iOS_SDK/OneSignalDevApp/OneSignalDevApp/SwiftTest.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,19 @@
2828
import Foundation
2929
import OneSignalFramework
3030

31-
class SwiftTest: NSObject {
31+
class SwiftTest: NSObject, OSUserJwtInvalidatedListener {
32+
func onUserJwtInvalidated(event: OSUserJwtInvalidatedEvent) {
33+
print("event: \(event.jsonRepresentation())")
34+
print("externalId: \(event.externalId)")
35+
}
36+
3237
func testSwiftUserModel() {
3338
let token1 = OneSignal.User.pushSubscription.token
3439
let token = OneSignal.User.pushSubscription.token
3540
OneSignal.Debug._dump()
41+
OneSignal.login(externalId: "euid", token: "token")
42+
OneSignal.updateUserJwt(externalId: "euid", token: "token")
43+
OneSignal.addUserJwtInvalidatedListener(self)
44+
OneSignal.removeUserJwtInvalidatedListener(self)
3645
}
3746
}

iOS_SDK/OneSignalDevApp/OneSignalDevApp/ViewController.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,14 @@ - (IBAction)inAppMessagingSegmentedControlValueChanged:(UISegmentedControl *)sen
197197
- (IBAction)loginExternalUserId:(UIButton *)sender {
198198
NSString* externalUserId = self.externalUserIdTextField.text;
199199
NSString* token = self.tokenTextField.text;
200-
NSLog(@"Dev App: Logging in to external user ID %@ and token %@", externalUserId, token);
200+
NSLog(@"Dev App: Logging in to external user ID %@ and token %@", externalUserId, token);
201201
[OneSignal login:externalUserId withToken:token];
202202
}
203203

204204
- (IBAction)updateJwt:(id)sender {
205205
NSString* externalUserId = self.externalUserIdTextField.text;
206206
NSString* token = self.tokenTextField.text;
207-
NSLog(@"Dev App: updating JWT for external user ID %@ and token %@", externalUserId, token);
207+
NSLog(@"Dev App: updating JWT for external user ID %@ and token %@", externalUserId, token);
208208
[OneSignal updateUserJwt:externalUserId withToken:token];
209209
}
210210

iOS_SDK/OneSignalDevApp/OneSignalExample.xcodeproj/project.pbxproj

Lines changed: 221 additions & 6 deletions
Large diffs are not rendered by default.

iOS_SDK/OneSignalSDK/OneSignal.xcodeproj/project.pbxproj

Lines changed: 64 additions & 8 deletions
Large diffs are not rendered by default.

iOS_SDK/OneSignalSDK/OneSignalCore/Source/API/OneSignalClient.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,10 @@ - (double)calculateReattemptDelay:(int)reattemptCount {
176176
}
177177

178178
- (void)prettyPrintDebugStatementWithRequest:(OneSignalRequest *)request {
179-
if (![NSJSONSerialization isValidJSONObject:request.parameters])
179+
if (![NSJSONSerialization isValidJSONObject:request.parameters]) {
180+
[OneSignalLog onesignalLog:ONE_S_LL_VERBOSE message:[NSString stringWithFormat:@"HTTP Request (%@) with URL: %@, with headers: %@", NSStringFromClass([request class]), request.urlRequest.URL.absoluteString, request.additionalHeaders]];
180181
return;
182+
}
181183

182184
NSError *error;
183185

iOS_SDK/OneSignalSDK/OneSignalCore/Source/OneSignalCommonDefines.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
// Networking
3434
#define OS_API_VERSION @"1"
3535
#define OS_API_ACCEPT_HEADER @"application/vnd.onesignal.v" OS_API_VERSION @"+json"
36-
#define OS_API_SERVER_URL @"https://api.staging.onesignal.com/"
37-
#define OS_IAM_WEBVIEW_BASE_URL @"https://staging.onesignal.com/"
36+
#define OS_API_SERVER_URL @"https://api.onesignal.com/"
37+
#define OS_IAM_WEBVIEW_BASE_URL @"https://onesignal.com/"
3838

3939
// OneSignalUserDefault keys
4040
// String values start with "OSUD_" to maintain a level of uniqueness from other libs and app code
@@ -79,7 +79,6 @@
7979
#define OSUD_REQUIRES_USER_PRIVACY_CONSENT @"OSUD_REQUIRES_USER_PRIVACY_CONSENT"
8080

8181
/* Identity Verification */
82-
// TODO: JWT 🔐 Figure out the key below and may need to relate to existing key IOS_REQUIRES_USER_ID_AUTHENTICATION
8382
#define OSUD_USE_IDENTITY_VERIFICATION @"OSUD_USE_IDENTITY_VERIFICATION"
8483
#define OS_JWT_BEARER_TOKEN @"OS_JWT_BEARER_TOKEN"
8584
#define OS_JWT_TOKEN_INVALID @"OS_JWT_TOKEN_INVALID"
@@ -135,7 +134,7 @@
135134
#define IOS_USES_PROVISIONAL_AUTHORIZATION @"uses_provisional_auth"
136135
#define IOS_REQUIRES_EMAIL_AUTHENTICATION @"require_email_auth"
137136
#define IOS_REQUIRES_SMS_AUTHENTICATION @"require_sms_auth"
138-
#define IOS_REQUIRES_USER_ID_AUTHENTICATION @"require_user_id_auth" // TODO: JWT 🔐 Figure out the key, also think about needing to migrate this value
137+
#define IOS_JWT_REQUIRED @"jwt_required" // Returned by remote params
139138
#define IOS_RECEIVE_RECEIPTS_ENABLE @"receive_receipts_enable"
140139
#define IOS_OUTCOMES_V2_SERVICE_ENABLE @"v2_enabled"
141140
#define IOS_LOCATION_SHARED @"location_shared"
@@ -347,23 +346,28 @@ typedef enum {GET, POST, HEAD, PUT, DELETE, OPTIONS, CONNECT, TRACE, PATCH} HTTP
347346
#define OS_USER_EXECUTOR @"OS_USER_EXECUTOR"
348347
#define OS_USER_EXECUTOR_USER_REQUEST_QUEUE_KEY @"OS_USER_EXECUTOR_USER_REQUEST_QUEUE_KEY"
349348
#define OS_USER_EXECUTOR_TRANSFER_SUBSCRIPTION_REQUEST_QUEUE_KEY @"OS_USER_EXECUTOR_TRANSFER_SUBSCRIPTION_REQUEST_QUEUE_KEY"
349+
#define OS_USER_EXECUTOR_PENDING_QUEUE_KEY @"OS_USER_EXECUTOR_PENDING_QUEUE_KEY"
350350

351351
// Identity Executor
352352
#define OS_IDENTITY_EXECUTOR @"OS_IDENTITY_EXECUTOR"
353353
#define OS_IDENTITY_EXECUTOR_DELTA_QUEUE_KEY @"OS_IDENTITY_EXECUTOR_DELTA_QUEUE_KEY"
354354
#define OS_IDENTITY_EXECUTOR_ADD_REQUEST_QUEUE_KEY @"OS_IDENTITY_EXECUTOR_ADD_REQUEST_QUEUE_KEY"
355355
#define OS_IDENTITY_EXECUTOR_REMOVE_REQUEST_QUEUE_KEY @"OS_IDENTITY_EXECUTOR_REMOVE_REQUEST_QUEUE_KEY"
356+
#define OS_IDENTITY_EXECUTOR_PENDING_QUEUE_KEY @"OS_IDENTITY_EXECUTOR_PENDING_QUEUE_KEY"
356357

357358
// Property Executor
358359
#define OS_PROPERTIES_EXECUTOR @"OS_PROPERTIES_EXECUTOR"
359360
#define OS_PROPERTIES_EXECUTOR_DELTA_QUEUE_KEY @"OS_PROPERTIES_EXECUTOR_DELTA_QUEUE_KEY"
360361
#define OS_PROPERTIES_EXECUTOR_UPDATE_REQUEST_QUEUE_KEY @"OS_PROPERTIES_EXECUTOR_UPDATE_REQUEST_QUEUE_KEY"
362+
#define OS_PROPERTIES_EXECUTOR_PENDING_QUEUE_KEY @"OS_PROPERTIES_EXECUTOR_PENDING_QUEUE_KEY"
361363

362364
// Subscription Executor
365+
#define OS_SUBSCRIPTION_EXECUTOR @"OS_SUBSCRIPTION_EXECUTOR"
363366
#define OS_SUBSCRIPTION_EXECUTOR_DELTA_QUEUE_KEY @"OS_SUBSCRIPTION_EXECUTOR_DELTA_QUEUE_KEY"
364367
#define OS_SUBSCRIPTION_EXECUTOR_ADD_REQUEST_QUEUE_KEY @"OS_SUBSCRIPTION_EXECUTOR_ADD_REQUEST_QUEUE_KEY"
365368
#define OS_SUBSCRIPTION_EXECUTOR_REMOVE_REQUEST_QUEUE_KEY @"OS_SUBSCRIPTION_EXECUTOR_REMOVE_REQUEST_QUEUE_KEY"
366369
#define OS_SUBSCRIPTION_EXECUTOR_UPDATE_REQUEST_QUEUE_KEY @"OS_SUBSCRIPTION_EXECUTOR_UPDATE_REQUEST_QUEUE_KEY"
370+
#define OS_SUBSCRIPTION_EXECUTOR_PENDING_QUEUE_KEY @"OS_SUBSCRIPTION_EXECUTOR_PENDING_QUEUE_KEY"
367371

368372
// Live Activies Executor
369373
#define OS_LIVE_ACTIVITIES_EXECUTOR_UPDATE_TOKENS_KEY @"OS_LIVE_ACTIVITIES_EXECUTOR_UPDATE_TOKENS_KEY"

iOS_SDK/OneSignalSDK/OneSignalCore/Source/OneSignalMobileProvision.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ + (OSUIApplicationReleaseMode) releaseMode {
8787
NSDictionary *entitlements = nil;
8888
NSDictionary *provision = [self getProvision];
8989
if (provision) {
90-
// [OneSignalLog onesignalLog:ONE_S_LL_DEBUG message:[NSString stringWithFormat:@"provision: %@", provision]];
90+
[OneSignalLog onesignalLog:ONE_S_LL_DEBUG message:[NSString stringWithFormat:@"provision: %@", provision]];
9191
entitlements = [provision objectForKey:@"Entitlements"];
9292
}
9393
else

iOS_SDK/OneSignalSDK/OneSignalInAppMessages/Controller/OSMessagingController.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#import "OSInAppMessageInternal.h"
3030
#import "OSInAppMessageViewController.h"
3131
#import "OSTriggerController.h"
32+
#import <OneSignalOSCore/OneSignalOSCore.h>
3233
#import <OneSignalUser/OneSignalUser.h>
3334

3435
NS_ASSUME_NONNULL_BEGIN
@@ -39,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
3940

4041
@end
4142

42-
@interface OSMessagingController : NSObject <OSInAppMessageViewControllerDelegate, OSTriggerControllerDelegate, OSMessagingControllerDelegate, OSPushSubscriptionObserver>
43+
@interface OSMessagingController : NSObject <OSInAppMessageViewControllerDelegate, OSTriggerControllerDelegate, OSMessagingControllerDelegate, OSPushSubscriptionObserver, OSUserStateObserver, OSUserJwtConfigListener>
4344

4445
@property (class, readonly) BOOL isInAppMessagingPaused;
4546

@@ -52,7 +53,7 @@ NS_ASSUME_NONNULL_BEGIN
5253
+ (void)removeInstance;
5354
- (void)presentInAppMessage:(OSInAppMessageInternal *)message;
5455
- (void)updateInAppMessagesFromCache;
55-
- (void)getInAppMessagesFromServer:(NSString * _Nullable)subscriptionId;
56+
- (void)getInAppMessagesFromServer;
5657
- (void)messageViewImpressionRequest:(OSInAppMessageInternal *)message;
5758
- (void)messageViewPageImpressionRequest:(OSInAppMessageInternal *)message withPageId:(NSString *)pageId;
5859

0 commit comments

Comments
 (0)