Skip to content

Commit

Permalink
Release 4.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
yaoyue committed Nov 30, 2023
1 parent f316700 commit bc44f04
Show file tree
Hide file tree
Showing 23 changed files with 183 additions and 117 deletions.
166 changes: 86 additions & 80 deletions SensorsAnalyticsSDK.podspec
Original file line number Diff line number Diff line change
@@ -1,139 +1,145 @@
Pod::Spec.new do |s|
s.name = "SensorsAnalyticsSDK"
s.version = "4.5.23"
s.version = "4.6.0"
s.summary = "The official iOS SDK of Sensors Analytics."
s.homepage = "http://www.sensorsdata.cn"
s.source = { :git => 'https://github.com/sensorsdata/sa-sdk-ios.git', :tag => "v#{s.version}" }
s.license = { :type => "Apache License, Version 2.0" }
s.author = { "Yuhan ZOU" => "zouyuhan@sensorsdata.cn" }
s.ios.deployment_target = '9.0'
s.osx.deployment_target = '10.13'
s.tvos.deployment_target = '12.0'
s.default_subspec = 'Core'
s.frameworks = 'Foundation', 'SystemConfiguration'

s.libraries = 'icucore', 'z'

s.subspec '__Store' do |ss|
ss.source_files = 'SensorsAnalyticsSDK/Store/*.{h,m}'
ss.public_header_files = 'SensorsAnalyticsSDK/Store/SABaseStoreManager.h', 'SensorsAnalyticsSDK/Store/SAStorePlugin.h', 'SensorsAnalyticsSDK/Store/SAAESStorePlugin.h'
s.subspec '__Store' do |store|
store.source_files = 'SensorsAnalyticsSDK/Store/*.{h,m}'
store.public_header_files = 'SensorsAnalyticsSDK/Store/SABaseStoreManager.h', 'SensorsAnalyticsSDK/Store/SAStorePlugin.h', 'SensorsAnalyticsSDK/Store/SAAESStorePlugin.h'
end

s.subspec 'Base' do |b|
s.subspec 'Base' do |base|
core_dir = "SensorsAnalyticsSDK/Core/"
b.source_files = core_dir + "**/*.{h,m}"
b.exclude_files = core_dir + 'SAAlertController.{h,m}'
b.public_header_files = core_dir + "SensorsAnalyticsSDK.h", core_dir + "SensorsAnalyticsExtension.h", core_dir + "SensorsAnalyticsSDK+Public.h", core_dir + "SASecurityPolicy.h", core_dir + "SAConfigOptions.h", core_dir + "SAConstants.h", core_dir + "PropertyPlugin/SAPropertyPlugin.h"
b.ios.frameworks = 'CoreTelephony'
b.dependency 'SensorsAnalyticsSDK/__Store'
base.source_files = core_dir + "**/*.{h,m}"
base.exclude_files = core_dir + 'SAAlertController.{h,m}', core_dir + 'HookDelegate/**/*.{h,m}'
base.public_header_files = core_dir + "SensorsAnalyticsSDK.h", core_dir + "SensorsAnalyticsExtension.h", core_dir + "SensorsAnalyticsSDK+Public.h", core_dir + "SASecurityPolicy.h", core_dir + "SAConfigOptions.h", core_dir + "SAConstants.h", core_dir + "PropertyPlugin/SAPropertyPlugin.h"
base.ios.frameworks = 'CoreTelephony'
base.dependency 'SensorsAnalyticsSDK/__Store'
end

s.subspec 'Common' do |c|
c.dependency 'SensorsAnalyticsSDK/Base'
c.public_header_files = 'SensorsAnalyticsSDK/JSBridge/SensorsAnalyticsSDK+JavaScriptBridge.h'
c.source_files = 'SensorsAnalyticsSDK/Core/SAAlertController.{h,m}', 'SensorsAnalyticsSDK/JSBridge/**/*.{h,m}'
c.ios.source_files = 'SensorsAnalyticsSDK/RemoteConfig/**/*.{h,m}', 'SensorsAnalyticsSDK/ChannelMatch/**/*.{h,m}', 'SensorsAnalyticsSDK/Encrypt/**/*.{h,m}', 'SensorsAnalyticsSDK/Deeplink/**/*.{h,m}', 'SensorsAnalyticsSDK/DebugMode/**/*.{h,m}', 'SensorsAnalyticsSDK/Core/SAAlertController.h', 'SensorsAnalyticsSDK/UIRelated/**/*.{h,m}'
c.ios.public_header_files = 'SensorsAnalyticsSDK/{Encrypt,RemoteConfig,ChannelMatch,Deeplink,DebugMode}/{SAConfigOptions,SensorsAnalyticsSDK}+*.h', 'SensorsAnalyticsSDK/Encrypt/SAEncryptProtocol.h', 'SensorsAnalyticsSDK/Encrypt/SASecretKey.h', 'SensorsAnalyticsSDK/Deeplink/SASlinkCreator.h', 'SensorsAnalyticsSDK/UIRelated/UIView+SensorsAnalytics.h','SensorsAnalyticsSDK/Deeplink/SAAdvertisingConfig.h'
s.subspec 'Common' do |common|
common.ios.deployment_target = '9.0'
common.osx.deployment_target = '10.13'
common.dependency 'SensorsAnalyticsSDK/Base'
common.frameworks = 'WebKit'
common.public_header_files = 'SensorsAnalyticsSDK/JSBridge/SensorsAnalyticsSDK+JavaScriptBridge.h'
common.source_files = 'SensorsAnalyticsSDK/Core/SAAlertController.{h,m}', 'SensorsAnalyticsSDK/JSBridge/**/*.{h,m}', 'SensorsAnalyticsSDK/Core/HookDelegate/**/*.{h,m}'
common.ios.source_files = 'SensorsAnalyticsSDK/RemoteConfig/**/*.{h,m}', 'SensorsAnalyticsSDK/ChannelMatch/**/*.{h,m}', 'SensorsAnalyticsSDK/Encrypt/**/*.{h,m}', 'SensorsAnalyticsSDK/Deeplink/**/*.{h,m}', 'SensorsAnalyticsSDK/DebugMode/**/*.{h,m}', 'SensorsAnalyticsSDK/Core/SAAlertController.h', 'SensorsAnalyticsSDK/UIRelated/**/*.{h,m}'
common.ios.public_header_files = 'SensorsAnalyticsSDK/{Encrypt,RemoteConfig,ChannelMatch,Deeplink,DebugMode}/{SAConfigOptions,SensorsAnalyticsSDK}+*.h', 'SensorsAnalyticsSDK/Encrypt/SAEncryptProtocol.h', 'SensorsAnalyticsSDK/Encrypt/SASecretKey.h', 'SensorsAnalyticsSDK/Deeplink/SASlinkCreator.h', 'SensorsAnalyticsSDK/UIRelated/UIView+SensorsAnalytics.h','SensorsAnalyticsSDK/Deeplink/SAAdvertisingConfig.h'
end

s.subspec 'Core' do |c|
c.ios.dependency 'SensorsAnalyticsSDK/Visualized'
c.osx.dependency 'SensorsAnalyticsSDK/Common'
s.subspec 'Core' do |core|
core.ios.dependency 'SensorsAnalyticsSDK/Visualized'
core.osx.dependency 'SensorsAnalyticsSDK/Common'
core.tvos.dependency 'SensorsAnalyticsSDK/Base'
end

# 全埋点
s.subspec 'AutoTrack' do |g|
g.ios.deployment_target = '9.0'
g.dependency 'SensorsAnalyticsSDK/Common'
g.source_files = "SensorsAnalyticsSDK/AutoTrack/**/*.{h,m}"
g.public_header_files = 'SensorsAnalyticsSDK/AutoTrack/SensorsAnalyticsSDK+SAAutoTrack.h', 'SensorsAnalyticsSDK/AutoTrack/SAConfigOptions+AutoTrack.h'
g.frameworks = 'UIKit'
s.subspec 'AutoTrack' do |auto|
auto.platform = :ios, '9.0'
auto.dependency 'SensorsAnalyticsSDK/Common'
auto.source_files = "SensorsAnalyticsSDK/AutoTrack/**/*.{h,m}"
auto.public_header_files = 'SensorsAnalyticsSDK/AutoTrack/SensorsAnalyticsSDK+SAAutoTrack.h', 'SensorsAnalyticsSDK/AutoTrack/SAConfigOptions+AutoTrack.h'
auto.frameworks = 'UIKit'
end

# 可视化相关功能,包含可视化全埋点和点击分析
s.subspec 'Visualized' do |f|
f.ios.deployment_target = '9.0'
f.dependency 'SensorsAnalyticsSDK/AutoTrack'
f.source_files = "SensorsAnalyticsSDK/Visualized/**/*.{h,m}"
f.public_header_files = 'SensorsAnalyticsSDK/Visualized/SensorsAnalyticsSDK+Visualized.h', 'SensorsAnalyticsSDK/Visualized/SAConfigOptions+Visualized.h'
s.subspec 'Visualized' do |visualized|
visualized.platform = :ios, '9.0'
visualized.dependency 'SensorsAnalyticsSDK/AutoTrack'
visualized.source_files = "SensorsAnalyticsSDK/Visualized/**/*.{h,m}"
visualized.public_header_files = 'SensorsAnalyticsSDK/Visualized/SensorsAnalyticsSDK+Visualized.h', 'SensorsAnalyticsSDK/Visualized/SAConfigOptions+Visualized.h'
end

# 开启 GPS 定位采集
s.subspec 'Location' do |f|
f.ios.deployment_target = '9.0'
f.frameworks = 'CoreLocation'
f.dependency 'SensorsAnalyticsSDK/Core'
f.source_files = "SensorsAnalyticsSDK/Location/**/*.{h,m}"
f.public_header_files = 'SensorsAnalyticsSDK/Location/SensorsAnalyticsSDK+Location.h'
s.subspec 'Location' do |location|
location.platform = :ios, '9.0'
location.frameworks = 'CoreLocation'
location.dependency 'SensorsAnalyticsSDK/Core'
location.source_files = "SensorsAnalyticsSDK/Location/**/*.{h,m}"
location.public_header_files = 'SensorsAnalyticsSDK/Location/SensorsAnalyticsSDK+Location.h'
end

# 开启设备方向采集
s.subspec 'DeviceOrientation' do |f|
f.ios.deployment_target = '9.0'
f.dependency 'SensorsAnalyticsSDK/Core'
f.source_files = 'SensorsAnalyticsSDK/DeviceOrientation/**/*.{h,m}'
f.public_header_files = 'SensorsAnalyticsSDK/DeviceOrientation/SensorsAnalyticsSDK+DeviceOrientation.h'
f.frameworks = 'CoreMotion'
s.subspec 'DeviceOrientation' do |d|
d.platform = :ios, '9.0'
d.dependency 'SensorsAnalyticsSDK/Core'
d.source_files = 'SensorsAnalyticsSDK/DeviceOrientation/**/*.{h,m}'
d.public_header_files = 'SensorsAnalyticsSDK/DeviceOrientation/SensorsAnalyticsSDK+DeviceOrientation.h'
d.frameworks = 'CoreMotion'
end

# 支持推送点击
s.subspec 'AppPush' do |f|
f.ios.deployment_target = '9.0'
f.dependency 'SensorsAnalyticsSDK/Core'
f.source_files = "SensorsAnalyticsSDK/AppPush/**/*.{h,m}"
f.public_header_files = 'SensorsAnalyticsSDK/AppPush/SAConfigOptions+AppPush.h'
s.subspec 'AppPush' do |push|
push.platform = :ios, '9.0'
push.dependency 'SensorsAnalyticsSDK/Core'
push.source_files = "SensorsAnalyticsSDK/AppPush/**/*.{h,m}"
push.public_header_files = 'SensorsAnalyticsSDK/AppPush/SAConfigOptions+AppPush.h'
end

# 支持崩溃事件采集
s.subspec 'Exception' do |e|
e.ios.deployment_target = '9.0'
e.dependency 'SensorsAnalyticsSDK/Common'
e.source_files = "SensorsAnalyticsSDK/Exception/**/*.{h,m}"
e.public_header_files = 'SensorsAnalyticsSDK/Exception/SAConfigOptions+Exception.h'
s.subspec 'Exception' do |exception|
exception.platform = :ios, '9.0'
exception.dependency 'SensorsAnalyticsSDK/Common'
exception.source_files = "SensorsAnalyticsSDK/Exception/**/*.{h,m}"
exception.public_header_files = 'SensorsAnalyticsSDK/Exception/SAConfigOptions+Exception.h'
end

# 基于 UA,使用 UIWebView 或者 WKWebView 进行 App 与 H5 打通
s.subspec 'WebView' do |w|
w.ios.deployment_target = '9.0'
w.dependency 'SensorsAnalyticsSDK/Core'
w.source_files = "SensorsAnalyticsSDK/WebView/**/*.{h,m}"
w.public_header_files = 'SensorsAnalyticsSDK/WebView/SensorsAnalyticsSDK+WebView.h'
s.subspec 'WebView' do |web|
web.platform = :ios, '9.0'
web.dependency 'SensorsAnalyticsSDK/Core'
web.source_files = "SensorsAnalyticsSDK/WebView/**/*.{h,m}"
web.public_header_files = 'SensorsAnalyticsSDK/WebView/SensorsAnalyticsSDK+WebView.h'
end

# 基于 UA,使用 WKWebView 进行 App 与 H5 打通
s.subspec 'WKWebView' do |w|
w.ios.deployment_target = '9.0'
w.dependency 'SensorsAnalyticsSDK/Core'
w.source_files = "SensorsAnalyticsSDK/WKWebView/**/*.{h,m}"
w.public_header_files = 'SensorsAnalyticsSDK/WKWebView/SensorsAnalyticsSDK+WKWebView.h'
s.subspec 'WKWebView' do |web|
web.platform = :ios, '9.0'
web.dependency 'SensorsAnalyticsSDK/Core'
web.source_files = "SensorsAnalyticsSDK/WKWebView/**/*.{h,m}"
web.public_header_files = 'SensorsAnalyticsSDK/WKWebView/SensorsAnalyticsSDK+WKWebView.h'
end

s.subspec 'ApplicationExtension' do |e|
e.dependency 'SensorsAnalyticsSDK/Base'
e.source_files = 'SensorsAnalyticsSDK/AppExtension/*.{h,m}'
e.public_header_files = 'SensorsAnalyticsSDK/AppExtension/SensorsAnalyticsSDK+SAAppExtension.h'
s.subspec 'ApplicationExtension' do |application|
application.platform = :ios, '9.0'
application.dependency 'SensorsAnalyticsSDK/Base'
application.source_files = 'SensorsAnalyticsSDK/AppExtension/*.{h,m}'
application.public_header_files = 'SensorsAnalyticsSDK/AppExtension/SensorsAnalyticsSDK+SAAppExtension.h'
end

# 使用老版 Cell 点击全埋点采集方案,可能导致某些场景,事件漏采集。使用前建议咨询神策售后技术顾问,否则请慎重使用!
s.subspec 'DeprecatedCellClick' do |d|
d.ios.deployment_target = '9.0'
d.dependency 'SensorsAnalyticsSDK/Core'
d.source_files = 'CellClick_HookDelegate_Deprecated/*.{h,m}'
d.project_header_files = 'CellClick_HookDelegate_Deprecated/*.h'
s.subspec 'DeprecatedCellClick' do |deprecated|
deprecated.platform = :ios, '9.0'
deprecated.dependency 'SensorsAnalyticsSDK/Core'
deprecated.source_files = 'CellClick_HookDelegate_Deprecated/*.{h,m}'
deprecated.project_header_files = 'CellClick_HookDelegate_Deprecated/*.h'
end

# 支持曝光
s.subspec 'Exposure' do |h|
h.ios.deployment_target = '9.0'
h.dependency 'SensorsAnalyticsSDK/Common'
h.source_files = 'SensorsAnalyticsSDK/Exposure/**/*.{h,m}'
h.public_header_files = 'SensorsAnalyticsSDK/Exposure/SAConfigOptions+Exposure.h', 'SensorsAnalyticsSDK/Exposure/SAExposureConfig.h', 'SensorsAnalyticsSDK/Exposure/SAExposureData.h', 'SensorsAnalyticsSDK/Exposure/SensorsAnalyticsSDK+Exposure.h', 'SensorsAnalyticsSDK/Exposure/UIView+ExposureIdentifier.h', 'SensorsAnalyticsSDK/Exposure/SAExposureListener.h'
s.subspec 'Exposure' do |exposure|
exposure.platform = :ios, '9.0'
exposure.dependency 'SensorsAnalyticsSDK/Common'
exposure.source_files = 'SensorsAnalyticsSDK/Exposure/**/*.{h,m}'
exposure.public_header_files = 'SensorsAnalyticsSDK/Exposure/SAConfigOptions+Exposure.h', 'SensorsAnalyticsSDK/Exposure/SAExposureConfig.h', 'SensorsAnalyticsSDK/Exposure/SAExposureData.h', 'SensorsAnalyticsSDK/Exposure/SensorsAnalyticsSDK+Exposure.h', 'SensorsAnalyticsSDK/Exposure/UIView+ExposureIdentifier.h', 'SensorsAnalyticsSDK/Exposure/SAExposureListener.h'
end

# SDK 切换到英文版,运营商属性、日志和弹框提示等,都换成英文。使用前咨询神策售后技术顾问,否则请慎重使用!
s.subspec 'EnglishResources' do |e|
e.dependency 'SensorsAnalyticsSDK/Base'
e.source_files = 'SpecialFileSources/SACoreResources+English.{h,m}'
e.project_header_files = 'SpecialFileSources/SACoreResources+English.h'
s.subspec 'EnglishResources' do |english|
english.dependency 'SensorsAnalyticsSDK/Base'
english.source_files = 'SpecialFileSources/SACoreResources+English.{h,m}'
english.project_header_files = 'SpecialFileSources/SACoreResources+English.h'
end

end
4 changes: 2 additions & 2 deletions SensorsAnalyticsSDK.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1586,8 +1586,6 @@
88EC2DF02757689800EF9778 /* SAStoreManager.m */,
4C9A9BF72975545C00DBF2A7 /* SACoreResources.h */,
4C9A9BF82975545C00DBF2A7 /* SACoreResources.m */,
881A40EB253D7B4F00854F69 /* SASwizzle.h */,
881A4157253D7B4F00854F69 /* SASwizzle.m */,
881A414B253D7B4F00854F69 /* SensorsAnalyticsSDK.h */,
4DAE222C2A8F62180047C5AC /* SensorsAnalyticsExtension.h */,
881A40E7253D7B4F00854F69 /* SensorsAnalyticsSDK.m */,
Expand Down Expand Up @@ -2241,6 +2239,8 @@
F2346B7D25E0AE5600AA3684 /* HookDelegate */ = {
isa = PBXGroup;
children = (
881A40EB253D7B4F00854F69 /* SASwizzle.h */,
881A4157253D7B4F00854F69 /* SASwizzle.m */,
F277F5E225CFCE56009B5CE6 /* NSObject+SADelegateProxy.h */,
F277F5E125CFCE56009B5CE6 /* NSObject+SADelegateProxy.m */,
4D4DB2BD25B7D19B00938842 /* SAClassHelper.h */,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ - (instancetype)init {
_lib = @"iOS";
#elif TARGET_OS_OSX
_lib = @"macOS";
#elif TARGET_OS_TV
_lib = @"tvOS";
#endif
_method = kSALibMethodCode;
_version = [SensorsAnalyticsSDK libVersion];
Expand Down
12 changes: 6 additions & 6 deletions SensorsAnalyticsSDK/Core/Builder/SAIdentifier.m
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
#import "SensorsAnalyticsSDK+Private.h"
#import "SALimitKeyManager.h"

#if TARGET_OS_IOS
#if TARGET_OS_IOS || TARGET_OS_TV
#import "SAKeyChainItemWrapper.h"
#import <UIKit/UIKit.h>
#endif
Expand Down Expand Up @@ -122,7 +122,7 @@ - (BOOL)identify:(NSString *)anonymousId {

- (void)archiveAnonymousId:(NSString *)anonymousId {
[[SAStoreManager sharedInstance] setObject:anonymousId forKey:kSAEventDistinctId];
#if TARGET_OS_IOS
#if TARGET_OS_IOS || TARGET_OS_TV
[SAKeyChainItemWrapper saveUdid:anonymousId];
#endif
}
Expand Down Expand Up @@ -226,7 +226,7 @@ - (void)clearLoginInfo {
});
}

#if TARGET_OS_IOS
#if TARGET_OS_IOS || TARGET_OS_TV
+ (NSString *)idfa {
NSString *idfa = SALimitKeyManager.idfa;
if ([idfa isEqualToString:@""]) {
Expand Down Expand Up @@ -277,7 +277,7 @@ + (NSString *)serialNumber {

+ (NSString *)hardwareID {
NSString *distinctId = nil;
#if TARGET_OS_IOS
#if TARGET_OS_IOS || TARGET_OS_TV
distinctId = [self idfa];
// 没有IDFA,则使用IDFV
if (!distinctId) {
Expand All @@ -300,7 +300,7 @@ + (NSString *)hardwareID {
- (NSString *)unarchiveAnonymousId {
NSString *anonymousId = [[SAStoreManager sharedInstance] objectForKey:kSAEventDistinctId];

#if TARGET_OS_IOS
#if TARGET_OS_IOS || TARGET_OS_TV
NSString *distinctIdInKeychain = [SAKeyChainItemWrapper saUdid];
if (distinctIdInKeychain.length > 0) {
if (![anonymousId isEqualToString:distinctIdInKeychain]) {
Expand Down Expand Up @@ -588,7 +588,7 @@ - (NSDictionary *)unarchiveIdentitiesWithKey:(NSString *)loginIDKey {
if (!identities[kSAIdentitiesUniqueID] && !identities[kSAIdentitiesUUID] ) {
NSString *key = kSAIdentitiesUUID;
NSString *value = [NSUUID UUID].UUIDString;
#if TARGET_OS_IOS
#if TARGET_OS_IOS || TARGET_OS_TV
if ([SAIdentifier idfv]) {
key = kSAIdentitiesUniqueID;
value = [SAIdentifier idfv];
Expand Down
6 changes: 6 additions & 0 deletions SensorsAnalyticsSDK/Core/Builder/SAPresetPropertyObject.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,10 @@ NS_ASSUME_NONNULL_BEGIN
@end
#endif

#if TARGET_OS_TV
@interface SATVPresetProperty : SAPresetPropertyObject

@end
#endif

NS_ASSUME_NONNULL_END
33 changes: 32 additions & 1 deletion SensorsAnalyticsSDK/Core/Builder/SAPresetPropertyObject.m
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
#import "SAJSONUtil.h"
#import "SAConstants+Private.h"

#if TARGET_OS_IOS
#if TARGET_OS_IOS || TARGET_OS_TV
#import <UIKit/UIKit.h>
#elif TARGET_OS_OSX
#import <AppKit/AppKit.h>
Expand Down Expand Up @@ -245,3 +245,34 @@ - (NSInteger)screenWidth {

@end
#endif


#if TARGET_OS_TV
@implementation SATVPresetProperty

- (NSString *)deviceModel {
return [self sysctlByName:@"hw.machine"];
}

- (NSString *)lib {
return @"tvOS";
}

- (NSString *)os {
return @"tvOS";
}

- (NSString *)osVersion {
return [[UIDevice currentDevice] systemVersion];
}

- (NSInteger)screenHeight {
return (NSInteger)UIScreen.mainScreen.bounds.size.height;
}

- (NSInteger)screenWidth {
return (NSInteger)UIScreen.mainScreen.bounds.size.width;
}

@end
#endif
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface NSObject (SASwizzle)

+ (BOOL)sa_swizzleMethod:(SEL)origSel_ withMethod:(SEL)altSel_ error:(NSError **)error_;

+ (BOOL)sa_swizzleClassMethod:(SEL)origSel_ withClassMethod:(SEL)altSel_ error:(NSError **)error_;

+ (BOOL)sa_swizzleMethod:(SEL)origSel_ withClass:(Class)altCla_ withMethod:(SEL)altSel_ error:(NSError **)error_;
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ - (void)prepare {
}
#elif TARGET_OS_OSX
propertyObject = [[SAMacPresetProperty alloc] init];
#elif TARGET_OS_TV
propertyObject = [[SATVPresetProperty alloc] init];
#endif

NSMutableDictionary<NSString *, id> *properties = [NSMutableDictionary dictionary];
Expand Down
Loading

0 comments on commit bc44f04

Please sign in to comment.