Skip to content

Commit 73abbf3

Browse files
switch to os_log
1 parent 8a62c73 commit 73abbf3

1 file changed

Lines changed: 47 additions & 27 deletions

File tree

ios/RNMParticle/RNMPRokt.mm

Lines changed: 47 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,33 @@
1919
#import <React/RCTViewManager.h>
2020
#import <React/RCTUIManager.h>
2121
#import <React/RCTBridge.h>
22+
#import <os/log.h>
2223
#import "RoktEventManager.h"
2324

2425
#ifdef RCT_NEW_ARCH_ENABLED
2526
#import "RoktNativeLayoutComponentView.h"
2627
#import <RNMParticle/RNMParticle.h>
2728
#endif // RCT_NEW_ARCH_ENABLED
2829

30+
// os_log for [mParticle-Rokt] diagnostics: visible in production (Console.app, device logs)
31+
// and does not trigger RCT LogBox/warning UI in debug.
32+
static os_log_t _rokt_os_log(void) {
33+
static os_log_t log;
34+
static dispatch_once_t once;
35+
dispatch_once(&once, ^{
36+
log = os_log_create("com.mparticle.react-native", "rokt");
37+
});
38+
return log;
39+
}
40+
41+
static void _rokt_log(NSString *format, ...) {
42+
va_list args;
43+
va_start(args, format);
44+
NSString *msg = [[NSString alloc] initWithFormat:format arguments:args];
45+
va_end(args);
46+
os_log_with_type(_rokt_os_log(), OS_LOG_TYPE_INFO, "%{public}s", [msg UTF8String]);
47+
}
48+
2949
@interface RNMPRokt ()
3050

3151
@property (nonatomic, nullable) RoktEventManager *eventManager;
@@ -43,15 +63,15 @@ + (NSString *)moduleName {
4363
}
4464

4565
+ (void)load {
46-
RCTLogWarn(@"[mParticle-Rokt] RNMPRokt module load");
66+
_rokt_log(@"[mParticle-Rokt] RNMPRokt module load");
4767
RCTRegisterModule(self);
4868
}
4969

5070
- (dispatch_queue_t)methodQueue
5171
{
5272
BOOL bridgeNil = (self.bridge == nil);
5373
BOOL uiManagerNil = (self.bridge.uiManager == nil);
54-
RCTLogWarn(@"[mParticle-Rokt] methodQueue called, bridge %@, uiManager %@", bridgeNil ? @"nil" : @"non-nil", uiManagerNil ? @"nil" : @"non-nil");
74+
_rokt_log(@"[mParticle-Rokt] methodQueue called, bridge %@, uiManager %@", bridgeNil ? @"nil" : @"non-nil", uiManagerNil ? @"nil" : @"non-nil");
5575
return self.bridge.uiManager.methodQueue;
5676
}
5777

@@ -69,10 +89,10 @@ - (void)setMethodQueue:(dispatch_queue_t)methodQueue
6989
static NSDictionary * __attribute__((optnone)) safeExtractRoktConfigDict(
7090
JS::NativeMPRokt::RoktConfigType &roktConfig) {
7191
if (&roktConfig == nullptr) {
72-
RCTLogWarn(@"[mParticle-Rokt] safeExtractRoktConfigDict: roktConfig ref is nullptr, returning nil");
92+
_rokt_log(@"[mParticle-Rokt] safeExtractRoktConfigDict: roktConfig ref is nullptr, returning nil");
7393
return nil;
7494
}
75-
RCTLogWarn(@"[mParticle-Rokt] safeExtractRoktConfigDict: extracting config");
95+
_rokt_log(@"[mParticle-Rokt] safeExtractRoktConfigDict: extracting config");
7696
NSMutableDictionary *roktConfigDict = [[NSMutableDictionary alloc] init];
7797
if (roktConfig.cacheConfig().has_value()) {
7898
NSMutableDictionary *cacheConfigDict = [[NSMutableDictionary alloc] init];
@@ -84,11 +104,11 @@ - (void)setMethodQueue:(dispatch_queue_t)methodQueue
84104
cacheConfigDict[@"cacheAttributes"] = cacheConfig.cacheAttributes();
85105
}
86106
roktConfigDict[@"cacheConfig"] = cacheConfigDict;
87-
RCTLogWarn(@"[mParticle-Rokt] safeExtractRoktConfigDict: cacheConfig present, keys: %lu", (unsigned long)roktConfigDict.count);
107+
_rokt_log(@"[mParticle-Rokt] safeExtractRoktConfigDict: cacheConfig present, keys: %lu", (unsigned long)roktConfigDict.count);
88108
} else {
89-
RCTLogWarn(@"[mParticle-Rokt] safeExtractRoktConfigDict: cacheConfig has no value");
109+
_rokt_log(@"[mParticle-Rokt] safeExtractRoktConfigDict: cacheConfig has no value");
90110
}
91-
RCTLogWarn(@"[mParticle-Rokt] safeExtractRoktConfigDict: returning dict with %lu keys", (unsigned long)roktConfigDict.count);
111+
_rokt_log(@"[mParticle-Rokt] safeExtractRoktConfigDict: returning dict with %lu keys", (unsigned long)roktConfigDict.count);
92112
return roktConfigDict;
93113
}
94114

@@ -99,7 +119,7 @@ - (void)selectPlacements:(NSString *)identifer
99119
roktConfig:(JS::NativeMPRokt::RoktConfigType &)roktConfig
100120
fontFilesMap:(NSDictionary *)fontFilesMap
101121
{
102-
RCTLogWarn(@"[mParticle-Rokt] New Architecture Implementation");
122+
_rokt_log(@"[mParticle-Rokt] New Architecture Implementation");
103123
NSMutableDictionary *finalAttributes = [self convertToMutableDictionaryOfStrings:attributes];
104124

105125
NSDictionary *roktConfigDict = safeExtractRoktConfigDict(roktConfig);
@@ -108,70 +128,70 @@ - (void)selectPlacements:(NSString *)identifer
108128
// Old Architecture Implementation
109129
RCT_EXPORT_METHOD(selectPlacements:(NSString *) identifer attributes:(NSDictionary *)attributes placeholders:(NSDictionary * _Nullable)placeholders roktConfig:(NSDictionary * _Nullable)roktConfig fontFilesMap:(NSDictionary * _Nullable)fontFilesMap)
110130
{
111-
RCTLogWarn(@"[mParticle-Rokt] Old Architecture Implementation");
131+
_rokt_log(@"[mParticle-Rokt] Old Architecture Implementation");
112132
NSMutableDictionary *finalAttributes = [self convertToMutableDictionaryOfStrings:attributes];
113133
MPRoktConfig *config = [self buildRoktConfigFromDict:roktConfig];
114134
#endif
115135

116-
RCTLogWarn(@"[mParticle-Rokt] selectPlacements called with identifier: %@, attributes count: %lu", identifer, (unsigned long)finalAttributes.count);
136+
_rokt_log(@"[mParticle-Rokt] selectPlacements called with identifier: %@, attributes count: %lu", identifer, (unsigned long)finalAttributes.count);
117137

118138
[MParticle _setWrapperSdk_internal:MPWrapperSdkReactNative version:@""];
119139
// Create callback implementation
120140
MPRoktEventCallback *callbacks = [[MPRoktEventCallback alloc] init];
121141
__weak __typeof__(self) weakSelf = self;
122142

123143
callbacks.onLoad = ^{
124-
RCTLogWarn(@"[mParticle-Rokt] onLoad");
144+
_rokt_log(@"[mParticle-Rokt] onLoad");
125145
[weakSelf.eventManager onRoktCallbackReceived:@"onLoad"];
126146
};
127147

128148
callbacks.onUnLoad = ^{
129-
RCTLogWarn(@"[mParticle-Rokt] onUnLoad");
149+
_rokt_log(@"[mParticle-Rokt] onUnLoad");
130150
[weakSelf.eventManager onRoktCallbackReceived:@"onUnLoad"];
131151
};
132152

133153
callbacks.onShouldShowLoadingIndicator = ^{
134-
RCTLogWarn(@"[mParticle-Rokt] onShouldShowLoadingIndicator");
154+
_rokt_log(@"[mParticle-Rokt] onShouldShowLoadingIndicator");
135155
[weakSelf.eventManager onRoktCallbackReceived:@"onShouldShowLoadingIndicator"];
136156
};
137157

138158
callbacks.onShouldHideLoadingIndicator = ^{
139-
RCTLogWarn(@"[mParticle-Rokt] onShouldHideLoadingIndicator");
159+
_rokt_log(@"[mParticle-Rokt] onShouldHideLoadingIndicator");
140160
[weakSelf.eventManager onRoktCallbackReceived:@"onShouldHideLoadingIndicator"];
141161
};
142162

143163
callbacks.onEmbeddedSizeChange = ^(NSString *placementId, CGFloat height) {
144-
RCTLogWarn(@"[mParticle-Rokt] onEmbeddedSizeChange");
164+
_rokt_log(@"[mParticle-Rokt] onEmbeddedSizeChange");
145165
[weakSelf.eventManager onWidgetHeightChanges:height placement:placementId];
146166
};
147167

148168
BOOL bridgeNil = (self.bridge == nil);
149169
BOOL uiManagerNil = (self.bridge.uiManager == nil);
150-
RCTLogWarn(@"[mParticle-Rokt] bridge %@, uiManager %@", bridgeNil ? @"nil" : @"non-nil", uiManagerNil ? @"nil" : @"non-nil");
170+
_rokt_log(@"[mParticle-Rokt] bridge %@, uiManager %@", bridgeNil ? @"nil" : @"non-nil", uiManagerNil ? @"nil" : @"non-nil");
151171

152172
if (bridgeNil || uiManagerNil) {
153-
RCTLogWarn(@"[mParticle-Rokt] addUIBlock skipped: self.bridge%@ is nil. selectPlacements will not be called. This can occur in New Architecture bridgeless production builds.", bridgeNil ? @"" : @".uiManager");
173+
_rokt_log(@"[mParticle-Rokt] addUIBlock skipped: self.bridge%@ is nil. selectPlacements will not be called. This can occur in New Architecture bridgeless production builds.", bridgeNil ? @"" : @".uiManager");
154174
} else {
155-
RCTLogWarn(@"[mParticle-Rokt] queuing addUIBlock for identifier: %@", identifer);
175+
_rokt_log(@"[mParticle-Rokt] queuing addUIBlock for identifier: %@", identifer);
156176
}
157177
[self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary<NSNumber *,UIView *> *viewRegistry) {
158178
__strong __typeof__(weakSelf) strongSelf = weakSelf;
159-
RCTLogWarn(@"[mParticle-Rokt] addUIBlock executing for identifier: %@, viewRegistry count: %lu", identifer, (unsigned long)viewRegistry.count);
179+
_rokt_log(@"[mParticle-Rokt] addUIBlock executing for identifier: %@, viewRegistry count: %lu", identifer, (unsigned long)viewRegistry.count);
160180

161181
NSMutableDictionary *nativePlaceholders = strongSelf ? [strongSelf getNativePlaceholders:placeholders viewRegistry:viewRegistry] : [NSMutableDictionary dictionary];
162182

163183
if (strongSelf) {
164184
[strongSelf subscribeViewEvents:identifer];
165185
}
166186

167-
RCTLogWarn(@"[mParticle-Rokt] calling mParticle Core selectPlacements for: %@", identifer);
187+
_rokt_log(@"[mParticle-Rokt] calling mParticle Core selectPlacements for: %@", identifer);
168188
[[[MParticle sharedInstance] rokt] selectPlacements:identifer
169189
attributes:finalAttributes
170190
embeddedViews:nativePlaceholders
171191
config:config
172192
callbacks:callbacks];
173193
}];
174-
RCTLogWarn(@"[mParticle-Rokt] addUIBlock enqueued for identifier: %@", identifer);
194+
_rokt_log(@"[mParticle-Rokt] addUIBlock enqueued for identifier: %@", identifer);
175195
}
176196

177197
RCT_EXPORT_METHOD(purchaseFinalized : (NSString *)placementId catalogItemId : (
@@ -210,7 +230,7 @@ - (MPColorMode)stringToColorMode:(NSString*)colorString
210230
}
211231

212232
- (MPRoktConfig *)buildRoktConfigFromDict:(NSDictionary<NSString *, id> *)configMap {
213-
RCTLogWarn(@"[mParticle-Rokt] buildRoktConfigFromDict: configMap %@", configMap == nil ? @"nil" : [NSString stringWithFormat:@"non-nil (%lu keys)", (unsigned long)configMap.count]);
233+
_rokt_log(@"[mParticle-Rokt] buildRoktConfigFromDict: configMap %@", configMap == nil ? @"nil" : [NSString stringWithFormat:@"non-nil (%lu keys)", (unsigned long)configMap.count]);
214234
MPRoktConfig *config = [[MPRoktConfig alloc] init];
215235
BOOL isConfigEmpty = YES;
216236

@@ -243,13 +263,13 @@ - (MPRoktConfig *)buildRoktConfigFromDict:(NSDictionary<NSString *, id> *)config
243263
config.cacheDuration = cacheDuration;
244264
}
245265

246-
RCTLogWarn(@"[mParticle-Rokt] buildRoktConfigFromDict: returning %@", isConfigEmpty ? @"nil" : @"config");
266+
_rokt_log(@"[mParticle-Rokt] buildRoktConfigFromDict: returning %@", isConfigEmpty ? @"nil" : @"config");
247267
return isConfigEmpty ? nil : config;
248268
}
249269

250270
- (void)subscribeViewEvents:(NSString* _Nonnull) viewName
251271
{
252-
RCTLogWarn(@"[mParticle-Rokt] subscribeViewEvents for viewName: %@", viewName);
272+
_rokt_log(@"[mParticle-Rokt] subscribeViewEvents for viewName: %@", viewName);
253273
if (self.eventManager == nil) {
254274
self.eventManager = [RoktEventManager allocWithZone: nil];
255275
}
@@ -260,7 +280,7 @@ - (void)subscribeViewEvents:(NSString* _Nonnull) viewName
260280

261281
- (NSMutableDictionary *)getNativePlaceholders:(NSDictionary *)placeholders viewRegistry:(NSDictionary<NSNumber *, UIView *> *)viewRegistry
262282
{
263-
RCTLogWarn(@"[mParticle-Rokt] getNativePlaceholders: placeholders %lu, viewRegistry %lu", (unsigned long)placeholders.count, (unsigned long)viewRegistry.count);
283+
_rokt_log(@"[mParticle-Rokt] getNativePlaceholders: placeholders %lu, viewRegistry %lu", (unsigned long)placeholders.count, (unsigned long)viewRegistry.count);
264284
NSMutableDictionary *nativePlaceholders = [[NSMutableDictionary alloc]initWithCapacity:placeholders.count];
265285

266286
for(id key in placeholders){
@@ -282,14 +302,14 @@ - (NSMutableDictionary *)getNativePlaceholders:(NSDictionary *)placeholders view
282302
#endif // RCT_NEW_ARCH_ENABLED
283303
}
284304

285-
RCTLogWarn(@"[mParticle-Rokt] getNativePlaceholders: resolved %lu native placeholder(s)", (unsigned long)nativePlaceholders.count);
305+
_rokt_log(@"[mParticle-Rokt] getNativePlaceholders: resolved %lu native placeholder(s)", (unsigned long)nativePlaceholders.count);
286306
return nativePlaceholders;
287307
}
288308

289309
#ifdef RCT_NEW_ARCH_ENABLED
290310
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const facebook::react::ObjCTurboModule::InitParams &)params {
291311
self.bridge = params.instance.bridge;
292-
RCTLogWarn(@"[mParticle-Rokt] getTurboModule: bridge set to %@", self.bridge == nil ? @"nil" : @"non-nil");
312+
_rokt_log(@"[mParticle-Rokt] getTurboModule: bridge set to %@", self.bridge == nil ? @"nil" : @"non-nil");
293313
return std::make_shared<facebook::react::NativeMPRoktSpecJSI>(params);
294314
}
295315
#endif // RCT_NEW_ARCH_ENABLED

0 commit comments

Comments
 (0)