Skip to content

Commit 3d43fc0

Browse files
committed
Add setLanguage method in OneSignal implementation
* Add setLanguage method in OneSignal implementation * Add LanguageContext static variable to store current language strategy * Initialize languageContext in OneSignal.init * Store language from languageContext strategy in userState.language * Add language to languageProviderAppDefined in setLanguage method and set languageContext strategy to languageProviderAppDefined
1 parent 09002db commit 3d43fc0

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

iOS_SDK/OneSignalSDK/Source/OneSignal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,10 @@ typedef void (^OSSMSSuccessBlock)(NSDictionary *results);
563563
+ (void)logoutSMSNumber;
564564
+ (void)logoutSMSNumberWithSuccess:(OSSMSSuccessBlock _Nullable)successBlock withFailure:(OSSMSFailureBlock _Nullable)failureBlock;
565565

566+
#pragma mark Language
567+
568+
+ (void)setLanguage:(NSString * _Nonnull)language;
569+
566570
#pragma mark External User Id
567571
// Typedefs defining completion blocks for updating the external user id
568572
typedef void (^OSUpdateExternalUserIdFailureBlock)(NSError *error);

iOS_SDK/OneSignalSDK/Source/OneSignal.m

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@
9090
#import "OneSignalLifecycleObserver.h"
9191
#import "OSPlayerTags.h"
9292

93+
#import "Language/LanguageProviderAppDefined.h"
94+
#import "Language/LanguageContext.h"
95+
9396
#pragma clang diagnostic push
9497
#pragma clang diagnostic ignored "-Wundeclared-selector"
9598

@@ -188,6 +191,7 @@ + (DelayedConsentInitializationParameters *)delayedInitParameters {
188191

189192
static OneSignalTrackIAP* trackIAPPurchase;
190193
NSString* emailToSet;
194+
static LanguageContext* languageContext;
191195

192196
int mLastNotificationTypes = -1;
193197
static int mSubscriptionStatus = -1;
@@ -722,6 +726,8 @@ + (void)init {
722726
appId = nil;
723727
return;
724728
}
729+
730+
languageContext = [LanguageContext new];
725731

726732
[OneSignalCacheCleaner cleanCachedUserData];
727733
[OneSignal checkIfApplicationImplementsDeprecatedMethods];
@@ -1781,9 +1787,7 @@ + (OSUserState *)createUserState {
17811787
userState.iOSBundle = [[NSBundle mainBundle] bundleIdentifier];
17821788
}
17831789

1784-
let preferredLanguages = [NSLocale preferredLanguages];
1785-
if (preferredLanguages && preferredLanguages.count > 0)
1786-
userState.language = [preferredLanguages objectAtIndex:0];
1790+
userState.language = [languageContext language];
17871791

17881792
let notificationTypes = [self getNotificationTypes];
17891793
mLastNotificationTypes = notificationTypes;
@@ -2694,6 +2698,12 @@ + (id)getTriggerValueForKey:(NSString *)key {
26942698
return [OSMessagingController.sharedInstance getTriggerValueForKey:key];
26952699
}
26962700

2701+
+ (void)setLanguage:(NSString * _Nonnull)language {
2702+
let languageProviderAppDefined = [LanguageProviderAppDefined new];
2703+
[languageProviderAppDefined setLanguage:language];
2704+
[languageContext setStrategy:languageProviderAppDefined];
2705+
2706+
}
26972707
+ (void)setExternalUserId:(NSString * _Nonnull)externalId {
26982708

26992709
// return if the user has not granted privacy permissions

0 commit comments

Comments
 (0)