Skip to content

Commit 25c811a

Browse files
committed
Finishing touches, still need to add property
1 parent 508f772 commit 25c811a

File tree

3 files changed

+45
-5
lines changed

3 files changed

+45
-5
lines changed

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OSUserInternalImpl.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class OSUserInternalImpl: NSObject, OSUserInternal {
7575
pushSubscriptionModel = OSSubscriptionModel(type: .push, address: token, subscriptionId: subscriptionId, accepted: true, isDisabled: false, changeNotifier: OSEventProducer())
7676
print("🔥 OSUserInternalImpl has set pushSubcription for testing")
7777
return pushSubscriptionModel
78+
7879
}
7980

8081
init(identityModel: OSIdentityModel, propertiesModel: OSPropertiesModel, pushSubscriptionModel: OSSubscriptionModel) {

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ - (id)initWith:(NSString * _Nonnull)activityId
104104
withSuccess:(OSResultSuccessBlock _Nullable)successBlock
105105
withFailure:(OSFailureBlock _Nullable)failureBlock;
106106
@end
107+
107108
@implementation OSPendingLiveActivityUpdate
108109

109110
- (id)initWith:(NSString *)activityId
@@ -120,6 +121,18 @@ - (id)initWith:(NSString *)activityId
120121
};
121122
@end
122123

124+
@interface OSSubscriptionObserver: NSObject<OSPushSubscriptionObserver>
125+
@end
126+
127+
@implementation OSSubscriptionObserver
128+
129+
- (void)onOSPushSubscriptionChangedWithStateChanges:(OSPushSubscriptionStateChanges * _Nonnull)stateChanges {
130+
if(stateChanges.to.subscriptionId){
131+
[OneSignal executePendingLiveActivityUpdates];
132+
}
133+
}
134+
@end
135+
123136
@implementation OneSignal
124137

125138
static NSString* mSDKType = @"native";
@@ -129,6 +142,8 @@ @implementation OneSignal
129142
static OSFailureBlock pendingGetTagsFailureBlock;
130143

131144
static NSMutableArray* pendingLiveActivityUpdates;
145+
static OSSubscriptionObserver* _subscriptionObserver;
146+
132147

133148
// Has attempted to register for push notifications with Apple since app was installed.
134149
static BOOL registeredWithApple = NO;
@@ -174,6 +189,7 @@ + (ObservablePermissionStateChangesType*)permissionStateChangesObserver {
174189
return _permissionStateChangesObserver;
175190
}
176191

192+
177193
/*
178194
Indicates if the iOS params request has started
179195
Set to true when the method is called and set false if the request's failure callback is triggered
@@ -413,16 +429,19 @@ + (void)enterLiveActivity:(NSString * _Nonnull)activityId withToken:(NSString *
413429
return;
414430
}
415431

416-
417-
if(self.currentSubscriptionState.userId) {
418-
[OneSignalClient.sharedClient executeRequest:[OSRequestLiveActivityEnter withUserId:self.currentSubscriptionState.userId appId:appId activityId:activityId token:token]
432+
NSString *subscriptionId = [OneSignalUserManagerImpl.sharedInstance addObserver:_subscriptionObserver].subscriptionId;
433+
if(subscriptionId) {
434+
[OneSignalClient.sharedClient executeRequest:[OSRequestLiveActivityEnter withUserId:subscriptionId appId:appId activityId:activityId token:token]
419435
onSuccess:^(NSDictionary *result) {
420436
[self callSuccessBlockOnMainThread:successBlock withResult:result];
421437
} onFailure:^(NSError *error) {
422438
[self callFailureBlockOnMainThread:failureBlock withError:error];
423439
}];
424440
} else {
441+
_subscriptionObserver = [OSSubscriptionObserver new];
442+
425443
[self addPendingLiveActivityUpdate:activityId withToken:token isEnter:true withSuccess:successBlock withFailure:failureBlock];
444+
426445
}
427446
}
428447

@@ -443,8 +462,10 @@ + (void)exitLiveActivity:(NSString * _Nonnull)activityId withSuccess:(OSResultSu
443462
}
444463
return;
445464
}
446-
if(self.currentSubscriptionState.userId) {
447-
[OneSignalClient.sharedClient executeRequest:[OSRequestLiveActivityExit withUserId:self.currentSubscriptionState.userId appId:appId activityId:activityId]
465+
466+
NSString *subscriptionId = OneSignalUserManagerImpl.sharedInstance.pushSubscription.subscriptionId;
467+
if(subscriptionId) {
468+
[OneSignalClient.sharedClient executeRequest:[OSRequestLiveActivityExit withUserId:subscriptionId appId:appId activityId:activityId]
448469
onSuccess:^(NSDictionary *result) {
449470
[self callSuccessBlockOnMainThread:successBlock withResult:result];
450471
} onFailure:^(NSError *error) {
@@ -455,6 +476,22 @@ + (void)exitLiveActivity:(NSString * _Nonnull)activityId withSuccess:(OSResultSu
455476
}
456477
}
457478

479+
+ (void)callFailureBlockOnMainThread:(OSFailureBlock)failureBlock withError:(NSError *)error {
480+
if (failureBlock) {
481+
dispatch_async(dispatch_get_main_queue(), ^{
482+
failureBlock(error);
483+
});
484+
}
485+
}
486+
487+
+ (void)callSuccessBlockOnMainThread:(OSResultSuccessBlock)successBlock withResult:(NSDictionary *)result{
488+
if (successBlock) {
489+
dispatch_async(dispatch_get_main_queue(), ^{
490+
successBlock(result);
491+
});
492+
}
493+
}
494+
458495
+ (void)addPendingLiveActivityUpdate:(NSString * _Nonnull)activityId
459496
withToken:(NSString * _Nullable)token
460497
isEnter:(BOOL)isEnter

iOS_SDK/OneSignalSDK/Source/OneSignalFramework.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ NS_SWIFT_NAME(login(externalId:token:));
118118
+ (void)exitLiveActivity:(NSString * _Nonnull)activityId;
119119
+ (void)exitLiveActivity:(NSString * _Nonnull)activityId withSuccess:(OSResultSuccessBlock _Nullable)successBlock withFailure:(OSFailureBlock _Nullable)failureBlock;
120120

121+
+ (void)executePendingLiveActivityUpdates;
122+
121123
#pragma mark Logging
122124
+ (Class<OSDebug>)Debug NS_REFINED_FOR_SWIFT;
123125

0 commit comments

Comments
 (0)