Skip to content

Commit 5a331d3

Browse files
committed
Use property model's language in IAMs
* IAMs were never updated to use the app defined setLanguage feature previously. * Now use the language from the user's property model to get variantId for an IAM. If this is null on the user, the IAM will still recover by going to the `default` variant. * Tested with different IAMs with different variants
1 parent 2e2ec42 commit 5a331d3

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

iOS_SDK/OneSignalSDK/OneSignalUser/Source/OneSignalUserManagerImpl.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,10 @@ public class OneSignalUserManagerImpl: NSObject, OneSignalUserManager {
9797
@objc public var pushSubscriptionId: String? {
9898
return _user?.pushSubscriptionModel.subscriptionId
9999
}
100+
101+
@objc public var language: String? {
102+
return _user?.propertiesModel.language
103+
}
100104

101105
private var hasCalledStart = false
102106

iOS_SDK/OneSignalSDK/Source/OSInAppMessageController.m

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
#import "OSInAppMessageController.h"
2929
#import <OneSignalCore/OneSignalCore.h>
30+
#import <OneSignalUser/OneSignalUser.h>
3031
#import "OSInAppMessagingDefines.h"
3132
#import "OSInAppMessagingRequests.h"
3233

@@ -38,7 +39,7 @@ - (void)loadMessageHTMLContentWithResult:(OSResultSuccessBlock _Nullable)success
3839

3940
if (!variantId) {
4041
if (failureBlock)
41-
failureBlock([NSError errorWithDomain:@"onesignal" code:0 userInfo:@{@"error" : [NSString stringWithFormat:@"Unable to find variant ID for languages (%@) for message ID: %@", NSLocale.preferredLanguages, self.messageId]}]);
42+
failureBlock([NSError errorWithDomain:@"onesignal" code:0 userInfo:@{@"error" : [NSString stringWithFormat:@"Unable to find variant ID for languages (%@) for message ID: %@", OneSignalUserManagerImpl.sharedInstance.language, self.messageId]}]);
4243

4344
return;
4445
}
@@ -62,20 +63,16 @@ variant over lower platforms (ie. 'all') even if they have a
6263
matching language.
6364
*/
6465
- (NSString * _Nullable)variantId {
65-
let isoLanguageCodes = [NSLocale preferredLanguages];
66+
// we only want the first two characters, ie. "en-US" we want "en"
67+
NSString *userLanguageCode = [OneSignalUserManagerImpl.sharedInstance.language substringToIndex:2];
6668

6769
NSString *variantId;
6870

6971
for (NSString *type in PREFERRED_VARIANT_ORDER) {
7072
if (self.variants[type]) {
71-
for (NSString *code in isoLanguageCodes) {
72-
// we only want the first two characters, ie. "en-US" we want "en"
73-
let isoLanguageCode = [code substringToIndex:2];
74-
75-
if (self.variants[type][isoLanguageCode]) {
76-
variantId = self.variants[type][isoLanguageCode];
77-
break;
78-
}
73+
if (self.variants[type][userLanguageCode]) {
74+
variantId = self.variants[type][userLanguageCode];
75+
break;
7976
}
8077

8178
if (!variantId && self.variants[type][@"default"]) {

iOS_SDK/OneSignalSDK/Source/OSMessagingController.m

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
#import "UIApplication+OneSignal.h" // Previously imported via "OneSignalHelper.h"
3131
#import "NSDateFormatter+OneSignal.h" // Previously imported via "OneSignalHelper.h"
3232
#import <OneSignalCore/OneSignalCore.h>
33-
#import "OneSignalInternal.h"
3433
#import "OSInAppMessageAction.h"
3534
#import "OSInAppMessageController.h"
3635
#import "OSInAppMessagePrompt.h"
@@ -317,7 +316,7 @@ - (void)onDidDismissInAppMessage:(OSInAppMessageInternal *)message {
317316

318317
- (void)presentInAppMessage:(OSInAppMessageInternal *)message {
319318
if (!message.variantId) {
320-
let errorMessage = [NSString stringWithFormat:@"Attempted to display a message with a nil variantId. Current preferred language is %@, supported message variants are %@", NSLocale.preferredLanguages, message.variants];
319+
let errorMessage = [NSString stringWithFormat:@"Attempted to display a message with a nil variantId. Current preferred language is %@, supported message variants are %@", OneSignalUserManagerImpl.sharedInstance.language, message.variants];
321320
[OneSignalLog onesignalLog:ONE_S_LL_ERROR message:errorMessage];
322321
return;
323322
}

0 commit comments

Comments
 (0)