react-native-firework-sdk 1.0.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -0
- package/android/build.gradle +193 -0
- package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
- package/android/gradle.properties +5 -0
- package/android/gradlew +185 -0
- package/android/gradlew.bat +89 -0
- package/android/publish.gradle +65 -0
- package/android/src/main/AndroidManifest.xml +16 -0
- package/android/src/main/java/com/reactnativefireworksdk/FireworkSDKPackage.kt +20 -0
- package/android/src/main/java/com/reactnativefireworksdk/components/videofeed/FWVideoFeed.kt +123 -0
- package/android/src/main/java/com/reactnativefireworksdk/constants/FWCommandConstant.kt +6 -0
- package/android/src/main/java/com/reactnativefireworksdk/constants/FWVideoPlayerConstant.kt +20 -0
- package/android/src/main/java/com/reactnativefireworksdk/manager/FWVideoFeedManager.kt +88 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWEventName.kt +35 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoFeedConfigModel.kt +27 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoFeedItemDetailsModel.kt +11 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoFeedMode.kt +7 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoFeedSource.kt +7 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoFeedTitlePosition.kt +7 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoPlaybackDetails.kt +19 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoPlayerConfigModel.kt +20 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoShoppingInterface.kt +13 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FWVideoShoppingProduct.kt +34 -0
- package/android/src/main/java/com/reactnativefireworksdk/models/FireworkSDKInterface.kt +12 -0
- package/android/src/main/java/com/reactnativefireworksdk/module/FWVideoShoppingModule.kt +190 -0
- package/android/src/main/java/com/reactnativefireworksdk/module/FireworkSDKModule.kt +248 -0
- package/android/src/main/java/com/reactnativefireworksdk/pages/FWVideoShoppingCartActivity.kt +43 -0
- package/android/src/main/java/com/reactnativefireworksdk/utils/FWEventUtils.kt +127 -0
- package/android/src/main/java/com/reactnativefireworksdk/utils/FWJsonUtils.kt +57 -0
- package/android/src/main/java/com/reactnativefireworksdk/utils/FWLogUtils.kt +147 -0
- package/android/src/main/java/com/reactnativefireworksdk/utils/FWUrlUtils.kt +68 -0
- package/android/src/main/java/com/reactnativefireworksdk/utils/FWVideoPlayerUtils.kt +18 -0
- package/android/src/main/res/layout/fwrn_fragment_shoppingcart.xml +8 -0
- package/android/src/main/res/layout/fwrn_fragment_videofeed.xml +20 -0
- package/android/src/main/res/values/styles.xml +43 -0
- package/ios/Component/VideoFeed.swift +262 -0
- package/ios/Component/VideoFeedConfiguration.swift +32 -0
- package/ios/Component/VideoFeedManager.m +51 -0
- package/ios/Component/VideoFeedManager.swift +40 -0
- package/ios/Component/VideoPlayerConfiguration.swift +30 -0
- package/ios/FireworkSdk-Bridging-Header.h +6 -0
- package/ios/FireworkSdk.xcodeproj/project.pbxproj +291 -0
- package/ios/Models/FireworkJsEvent.swift +34 -0
- package/ios/Models/FireworkSDK+JsModel.swift +62 -0
- package/ios/Models/RCTConvert+FireworkSDKModule.swift +91 -0
- package/ios/Models/RCTConvert+Shopping.swift +49 -0
- package/ios/Models/RCTConvert+VideoFeed.swift +69 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+CTA.swift +17 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule+EventTracking.swift +74 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.m +19 -0
- package/ios/Modules/FireworkSDKModule/FireworkSDKModule.swift +106 -0
- package/ios/Modules/FireworkSDKModule/MobileADConfiguration.swift +17 -0
- package/ios/Modules/Shopping/CartViewController.swift +98 -0
- package/ios/Modules/Shopping/Product.swift +33 -0
- package/ios/Modules/Shopping/ProductInfoViewConfiguration.swift +24 -0
- package/ios/Modules/Shopping/ShoppingModule.m +19 -0
- package/ios/Modules/Shopping/ShoppingModule.swift +214 -0
- package/ios/Utils/String+Color.swift +38 -0
- package/ios/Utils/UIView+Constraints.swift +91 -0
- package/ios/Utils/UIView+ParentViewController.swift +21 -0
- package/ios/Utils/UIViewController+AttachChild.swift +69 -0
- package/lib/commonjs/FireworkSDK.js +171 -0
- package/lib/commonjs/FireworkSDK.js.map +1 -0
- package/lib/commonjs/VideoShopping.js +146 -0
- package/lib/commonjs/VideoShopping.js.map +1 -0
- package/lib/commonjs/components/CartContainer.js +35 -0
- package/lib/commonjs/components/CartContainer.js.map +1 -0
- package/lib/commonjs/components/FWVideoFeed.js +18 -0
- package/lib/commonjs/components/FWVideoFeed.js.map +1 -0
- package/lib/commonjs/components/VideoFeed.js +82 -0
- package/lib/commonjs/components/VideoFeed.js.map +1 -0
- package/lib/commonjs/constants/FWErrorMessage.js +15 -0
- package/lib/commonjs/constants/FWErrorMessage.js.map +1 -0
- package/lib/commonjs/index.js +44 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/models/ADConfig.js +2 -0
- package/lib/commonjs/models/ADConfig.js.map +1 -0
- package/lib/commonjs/models/AddToCartResult.js +2 -0
- package/lib/commonjs/models/AddToCartResult.js.map +1 -0
- package/lib/commonjs/models/FWError.js +2 -0
- package/lib/commonjs/models/FWError.js.map +1 -0
- package/lib/commonjs/models/FWEvents.js +20 -0
- package/lib/commonjs/models/FWEvents.js.map +1 -0
- package/lib/commonjs/models/FeedItemDetails.js +2 -0
- package/lib/commonjs/models/FeedItemDetails.js.map +1 -0
- package/lib/commonjs/models/Product.js +2 -0
- package/lib/commonjs/models/Product.js.map +1 -0
- package/lib/commonjs/models/ProductInfoViewConfiguration.js +2 -0
- package/lib/commonjs/models/ProductInfoViewConfiguration.js.map +1 -0
- package/lib/commonjs/models/ProductUnit.js +2 -0
- package/lib/commonjs/models/ProductUnit.js.map +1 -0
- package/lib/commonjs/models/VideoFeedConfiguration.js +2 -0
- package/lib/commonjs/models/VideoFeedConfiguration.js.map +1 -0
- package/lib/commonjs/models/VideoPlaybackDetails.js +2 -0
- package/lib/commonjs/models/VideoPlaybackDetails.js.map +1 -0
- package/lib/commonjs/models/VideoPlaybackEventName.js +23 -0
- package/lib/commonjs/models/VideoPlaybackEventName.js.map +1 -0
- package/lib/commonjs/models/VideoPlayerConfiguration.js +2 -0
- package/lib/commonjs/models/VideoPlayerConfiguration.js.map +1 -0
- package/lib/commonjs/modules/FireworkSDKModule.js +20 -0
- package/lib/commonjs/modules/FireworkSDKModule.js.map +1 -0
- package/lib/commonjs/modules/ShoppingModule.js +20 -0
- package/lib/commonjs/modules/ShoppingModule.js.map +1 -0
- package/lib/module/FireworkSDK.js +153 -0
- package/lib/module/FireworkSDK.js.map +1 -0
- package/lib/module/VideoShopping.js +134 -0
- package/lib/module/VideoShopping.js.map +1 -0
- package/lib/module/components/CartContainer.js +18 -0
- package/lib/module/components/CartContainer.js.map +1 -0
- package/lib/module/components/FWVideoFeed.js +8 -0
- package/lib/module/components/FWVideoFeed.js.map +1 -0
- package/lib/module/components/VideoFeed.js +66 -0
- package/lib/module/components/VideoFeed.js.map +1 -0
- package/lib/module/constants/FWErrorMessage.js +7 -0
- package/lib/module/constants/FWErrorMessage.js.map +1 -0
- package/lib/module/index.js +10 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/models/ADConfig.js +2 -0
- package/lib/module/models/ADConfig.js.map +1 -0
- package/lib/module/models/AddToCartResult.js +2 -0
- package/lib/module/models/AddToCartResult.js.map +1 -0
- package/lib/module/models/FWError.js +2 -0
- package/lib/module/models/FWError.js.map +1 -0
- package/lib/module/models/FWEvents.js +13 -0
- package/lib/module/models/FWEvents.js.map +1 -0
- package/lib/module/models/FeedItemDetails.js +2 -0
- package/lib/module/models/FeedItemDetails.js.map +1 -0
- package/lib/module/models/Product.js +2 -0
- package/lib/module/models/Product.js.map +1 -0
- package/lib/module/models/ProductInfoViewConfiguration.js +2 -0
- package/lib/module/models/ProductInfoViewConfiguration.js.map +1 -0
- package/lib/module/models/ProductUnit.js +2 -0
- package/lib/module/models/ProductUnit.js.map +1 -0
- package/lib/module/models/VideoFeedConfiguration.js +2 -0
- package/lib/module/models/VideoFeedConfiguration.js.map +1 -0
- package/lib/module/models/VideoPlaybackDetails.js +2 -0
- package/lib/module/models/VideoPlaybackDetails.js.map +1 -0
- package/lib/module/models/VideoPlaybackEventName.js +16 -0
- package/lib/module/models/VideoPlaybackEventName.js.map +1 -0
- package/lib/module/models/VideoPlayerConfiguration.js +2 -0
- package/lib/module/models/VideoPlayerConfiguration.js.map +1 -0
- package/lib/module/modules/FireworkSDKModule.js +10 -0
- package/lib/module/modules/FireworkSDKModule.js.map +1 -0
- package/lib/module/modules/ShoppingModule.js +10 -0
- package/lib/module/modules/ShoppingModule.js.map +1 -0
- package/lib/typescript/FireworkSDK.d.ts +74 -0
- package/lib/typescript/VideoShopping.d.ts +54 -0
- package/lib/typescript/components/CartContainer.d.ts +3 -0
- package/lib/typescript/components/FWVideoFeed.d.ts +2 -0
- package/lib/typescript/components/VideoFeed.d.ts +53 -0
- package/lib/typescript/constants/FWErrorMessage.d.ts +2 -0
- package/lib/typescript/index.d.ts +25 -0
- package/lib/typescript/models/ADConfig.d.ts +10 -0
- package/lib/typescript/models/AddToCartResult.d.ts +10 -0
- package/lib/typescript/models/FWError.d.ts +10 -0
- package/lib/typescript/models/FWEvents.d.ts +55 -0
- package/lib/typescript/models/FeedItemDetails.d.ts +14 -0
- package/lib/typescript/models/Product.d.ts +19 -0
- package/lib/typescript/models/ProductInfoViewConfiguration.d.ts +18 -0
- package/lib/typescript/models/ProductUnit.d.ts +22 -0
- package/lib/typescript/models/VideoFeedConfiguration.d.ts +32 -0
- package/lib/typescript/models/VideoPlaybackDetails.d.ts +31 -0
- package/lib/typescript/models/VideoPlaybackEventName.d.ts +39 -0
- package/lib/typescript/models/VideoPlayerConfiguration.d.ts +25 -0
- package/lib/typescript/modules/FireworkSDKModule.d.ts +12 -0
- package/lib/typescript/modules/ShoppingModule.d.ts +13 -0
- package/package.json +147 -0
- package/react-native-firework-sdk.podspec +22 -0
- package/src/FireworkSDK.ts +153 -0
- package/src/VideoShopping.ts +165 -0
- package/src/components/CartContainer.tsx +20 -0
- package/src/components/FWVideoFeed.tsx +10 -0
- package/src/components/VideoFeed.tsx +109 -0
- package/src/constants/FWErrorMessage.ts +11 -0
- package/src/index.tsx +109 -0
- package/src/models/ADConfig.ts +10 -0
- package/src/models/AddToCartResult.ts +10 -0
- package/src/models/FWError.ts +10 -0
- package/src/models/FWEvents.ts +63 -0
- package/src/models/FeedItemDetails.ts +14 -0
- package/src/models/Product.ts +20 -0
- package/src/models/ProductInfoViewConfiguration.ts +20 -0
- package/src/models/ProductUnit.ts +23 -0
- package/src/models/VideoFeedConfiguration.ts +35 -0
- package/src/models/VideoPlaybackDetails.ts +33 -0
- package/src/models/VideoPlaybackEventName.ts +40 -0
- package/src/models/VideoPlayerConfiguration.ts +26 -0
- package/src/modules/FireworkSDKModule.ts +27 -0
- package/src/modules/ShoppingModule.ts +29 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
// !$*UTF8*$!
|
|
2
|
+
{
|
|
3
|
+
archiveVersion = 1;
|
|
4
|
+
classes = {
|
|
5
|
+
};
|
|
6
|
+
objectVersion = 46;
|
|
7
|
+
objects = {
|
|
8
|
+
|
|
9
|
+
/* Begin PBXBuildFile section */
|
|
10
|
+
1F6F718C2771B48200224AF3 /* FireworkSdk+EventTracking.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F6F71862771B48100224AF3 /* FireworkSdk+EventTracking.swift */; };
|
|
11
|
+
1F6F718D2771B48200224AF3 /* FireworkSdk.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F6F71882771B48100224AF3 /* FireworkSdk.swift */; };
|
|
12
|
+
1F6F718E2771B48200224AF3 /* FireworkSdk+CTA.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F6F71892771B48100224AF3 /* FireworkSdk+CTA.swift */; };
|
|
13
|
+
1F6F718F2771B48200224AF3 /* FireworkSdk.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F6F718B2771B48200224AF3 /* FireworkSdk.m */; };
|
|
14
|
+
/* End PBXBuildFile section */
|
|
15
|
+
|
|
16
|
+
/* Begin PBXCopyFilesBuildPhase section */
|
|
17
|
+
58B511D91A9E6C8500147676 /* CopyFiles */ = {
|
|
18
|
+
isa = PBXCopyFilesBuildPhase;
|
|
19
|
+
buildActionMask = 2147483647;
|
|
20
|
+
dstPath = "include/$(PRODUCT_NAME)";
|
|
21
|
+
dstSubfolderSpec = 16;
|
|
22
|
+
files = (
|
|
23
|
+
);
|
|
24
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
25
|
+
};
|
|
26
|
+
/* End PBXCopyFilesBuildPhase section */
|
|
27
|
+
|
|
28
|
+
/* Begin PBXFileReference section */
|
|
29
|
+
134814201AA4EA6300B7C361 /* libFireworkSdk.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libFireworkSdk.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
30
|
+
1F6F71862771B48100224AF3 /* FireworkSdk+EventTracking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FireworkSdk+EventTracking.swift"; sourceTree = "<group>"; };
|
|
31
|
+
1F6F71872771B48100224AF3 /* Models */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Models; sourceTree = "<group>"; };
|
|
32
|
+
1F6F71882771B48100224AF3 /* FireworkSdk.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FireworkSdk.swift; sourceTree = "<group>"; };
|
|
33
|
+
1F6F71892771B48100224AF3 /* FireworkSdk+CTA.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "FireworkSdk+CTA.swift"; sourceTree = "<group>"; };
|
|
34
|
+
1F6F718A2771B48100224AF3 /* FireworkSdk-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FireworkSdk-Bridging-Header.h"; sourceTree = "<group>"; };
|
|
35
|
+
1F6F718B2771B48200224AF3 /* FireworkSdk.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FireworkSdk.m; sourceTree = "<group>"; };
|
|
36
|
+
/* End PBXFileReference section */
|
|
37
|
+
|
|
38
|
+
/* Begin PBXFrameworksBuildPhase section */
|
|
39
|
+
58B511D81A9E6C8500147676 /* Frameworks */ = {
|
|
40
|
+
isa = PBXFrameworksBuildPhase;
|
|
41
|
+
buildActionMask = 2147483647;
|
|
42
|
+
files = (
|
|
43
|
+
);
|
|
44
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
45
|
+
};
|
|
46
|
+
/* End PBXFrameworksBuildPhase section */
|
|
47
|
+
|
|
48
|
+
/* Begin PBXGroup section */
|
|
49
|
+
134814211AA4EA7D00B7C361 /* Products */ = {
|
|
50
|
+
isa = PBXGroup;
|
|
51
|
+
children = (
|
|
52
|
+
134814201AA4EA6300B7C361 /* libFireworkSdk.a */,
|
|
53
|
+
);
|
|
54
|
+
name = Products;
|
|
55
|
+
sourceTree = "<group>";
|
|
56
|
+
};
|
|
57
|
+
58B511D21A9E6C8500147676 = {
|
|
58
|
+
isa = PBXGroup;
|
|
59
|
+
children = (
|
|
60
|
+
1F6F718A2771B48100224AF3 /* FireworkSdk-Bridging-Header.h */,
|
|
61
|
+
1F6F718B2771B48200224AF3 /* FireworkSdk.m */,
|
|
62
|
+
1F6F71882771B48100224AF3 /* FireworkSdk.swift */,
|
|
63
|
+
1F6F71892771B48100224AF3 /* FireworkSdk+CTA.swift */,
|
|
64
|
+
1F6F71862771B48100224AF3 /* FireworkSdk+EventTracking.swift */,
|
|
65
|
+
1F6F71872771B48100224AF3 /* Models */,
|
|
66
|
+
134814211AA4EA7D00B7C361 /* Products */,
|
|
67
|
+
);
|
|
68
|
+
sourceTree = "<group>";
|
|
69
|
+
};
|
|
70
|
+
/* End PBXGroup section */
|
|
71
|
+
|
|
72
|
+
/* Begin PBXNativeTarget section */
|
|
73
|
+
58B511DA1A9E6C8500147676 /* FireworkSdk */ = {
|
|
74
|
+
isa = PBXNativeTarget;
|
|
75
|
+
buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "FireworkSdk" */;
|
|
76
|
+
buildPhases = (
|
|
77
|
+
58B511D71A9E6C8500147676 /* Sources */,
|
|
78
|
+
58B511D81A9E6C8500147676 /* Frameworks */,
|
|
79
|
+
58B511D91A9E6C8500147676 /* CopyFiles */,
|
|
80
|
+
);
|
|
81
|
+
buildRules = (
|
|
82
|
+
);
|
|
83
|
+
dependencies = (
|
|
84
|
+
);
|
|
85
|
+
name = FireworkSdk;
|
|
86
|
+
productName = RCTDataManager;
|
|
87
|
+
productReference = 134814201AA4EA6300B7C361 /* libFireworkSdk.a */;
|
|
88
|
+
productType = "com.apple.product-type.library.static";
|
|
89
|
+
};
|
|
90
|
+
/* End PBXNativeTarget section */
|
|
91
|
+
|
|
92
|
+
/* Begin PBXProject section */
|
|
93
|
+
58B511D31A9E6C8500147676 /* Project object */ = {
|
|
94
|
+
isa = PBXProject;
|
|
95
|
+
attributes = {
|
|
96
|
+
LastUpgradeCheck = 0920;
|
|
97
|
+
ORGANIZATIONNAME = Facebook;
|
|
98
|
+
TargetAttributes = {
|
|
99
|
+
58B511DA1A9E6C8500147676 = {
|
|
100
|
+
CreatedOnToolsVersion = 6.1.1;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "FireworkSdk" */;
|
|
105
|
+
compatibilityVersion = "Xcode 3.2";
|
|
106
|
+
developmentRegion = English;
|
|
107
|
+
hasScannedForEncodings = 0;
|
|
108
|
+
knownRegions = (
|
|
109
|
+
English,
|
|
110
|
+
en,
|
|
111
|
+
);
|
|
112
|
+
mainGroup = 58B511D21A9E6C8500147676;
|
|
113
|
+
productRefGroup = 58B511D21A9E6C8500147676;
|
|
114
|
+
projectDirPath = "";
|
|
115
|
+
projectRoot = "";
|
|
116
|
+
targets = (
|
|
117
|
+
58B511DA1A9E6C8500147676 /* FireworkSdk */,
|
|
118
|
+
);
|
|
119
|
+
};
|
|
120
|
+
/* End PBXProject section */
|
|
121
|
+
|
|
122
|
+
/* Begin PBXSourcesBuildPhase section */
|
|
123
|
+
58B511D71A9E6C8500147676 /* Sources */ = {
|
|
124
|
+
isa = PBXSourcesBuildPhase;
|
|
125
|
+
buildActionMask = 2147483647;
|
|
126
|
+
files = (
|
|
127
|
+
1F6F718E2771B48200224AF3 /* FireworkSdk+CTA.swift in Sources */,
|
|
128
|
+
1F6F718C2771B48200224AF3 /* FireworkSdk+EventTracking.swift in Sources */,
|
|
129
|
+
1F6F718D2771B48200224AF3 /* FireworkSdk.swift in Sources */,
|
|
130
|
+
1F6F718F2771B48200224AF3 /* FireworkSdk.m in Sources */,
|
|
131
|
+
);
|
|
132
|
+
runOnlyForDeploymentPostprocessing = 0;
|
|
133
|
+
};
|
|
134
|
+
/* End PBXSourcesBuildPhase section */
|
|
135
|
+
|
|
136
|
+
/* Begin XCBuildConfiguration section */
|
|
137
|
+
58B511ED1A9E6C8500147676 /* Debug */ = {
|
|
138
|
+
isa = XCBuildConfiguration;
|
|
139
|
+
buildSettings = {
|
|
140
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
141
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
142
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
143
|
+
CLANG_ENABLE_MODULES = YES;
|
|
144
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
145
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
146
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
147
|
+
CLANG_WARN_COMMA = YES;
|
|
148
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
149
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
150
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
151
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
152
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
153
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
154
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
155
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
156
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
157
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
158
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
159
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
160
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
161
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
162
|
+
COPY_PHASE_STRIP = NO;
|
|
163
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
164
|
+
ENABLE_TESTABILITY = YES;
|
|
165
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
166
|
+
GCC_DYNAMIC_NO_PIC = NO;
|
|
167
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
168
|
+
GCC_OPTIMIZATION_LEVEL = 0;
|
|
169
|
+
GCC_PREPROCESSOR_DEFINITIONS = (
|
|
170
|
+
"DEBUG=1",
|
|
171
|
+
"$(inherited)",
|
|
172
|
+
);
|
|
173
|
+
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
174
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
175
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
176
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
177
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
178
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
179
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
180
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
181
|
+
MTL_ENABLE_DEBUG_INFO = YES;
|
|
182
|
+
ONLY_ACTIVE_ARCH = YES;
|
|
183
|
+
SDKROOT = iphoneos;
|
|
184
|
+
};
|
|
185
|
+
name = Debug;
|
|
186
|
+
};
|
|
187
|
+
58B511EE1A9E6C8500147676 /* Release */ = {
|
|
188
|
+
isa = XCBuildConfiguration;
|
|
189
|
+
buildSettings = {
|
|
190
|
+
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
191
|
+
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
|
192
|
+
CLANG_CXX_LIBRARY = "libc++";
|
|
193
|
+
CLANG_ENABLE_MODULES = YES;
|
|
194
|
+
CLANG_ENABLE_OBJC_ARC = YES;
|
|
195
|
+
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
|
196
|
+
CLANG_WARN_BOOL_CONVERSION = YES;
|
|
197
|
+
CLANG_WARN_COMMA = YES;
|
|
198
|
+
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
|
199
|
+
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
|
200
|
+
CLANG_WARN_EMPTY_BODY = YES;
|
|
201
|
+
CLANG_WARN_ENUM_CONVERSION = YES;
|
|
202
|
+
CLANG_WARN_INFINITE_RECURSION = YES;
|
|
203
|
+
CLANG_WARN_INT_CONVERSION = YES;
|
|
204
|
+
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
|
205
|
+
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
|
206
|
+
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
|
207
|
+
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
|
208
|
+
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
|
209
|
+
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
|
210
|
+
CLANG_WARN_UNREACHABLE_CODE = YES;
|
|
211
|
+
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
|
212
|
+
COPY_PHASE_STRIP = YES;
|
|
213
|
+
ENABLE_NS_ASSERTIONS = NO;
|
|
214
|
+
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
|
215
|
+
GCC_C_LANGUAGE_STANDARD = gnu99;
|
|
216
|
+
GCC_NO_COMMON_BLOCKS = YES;
|
|
217
|
+
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
|
218
|
+
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
|
219
|
+
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
|
220
|
+
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
|
221
|
+
GCC_WARN_UNUSED_FUNCTION = YES;
|
|
222
|
+
GCC_WARN_UNUSED_VARIABLE = YES;
|
|
223
|
+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
|
|
224
|
+
MTL_ENABLE_DEBUG_INFO = NO;
|
|
225
|
+
SDKROOT = iphoneos;
|
|
226
|
+
VALIDATE_PRODUCT = YES;
|
|
227
|
+
};
|
|
228
|
+
name = Release;
|
|
229
|
+
};
|
|
230
|
+
58B511F01A9E6C8500147676 /* Debug */ = {
|
|
231
|
+
isa = XCBuildConfiguration;
|
|
232
|
+
buildSettings = {
|
|
233
|
+
HEADER_SEARCH_PATHS = (
|
|
234
|
+
"$(inherited)",
|
|
235
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
236
|
+
"$(SRCROOT)/../../../React/**",
|
|
237
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
238
|
+
);
|
|
239
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
240
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
241
|
+
PRODUCT_NAME = FireworkSdk;
|
|
242
|
+
SKIP_INSTALL = YES;
|
|
243
|
+
SWIFT_OBJC_BRIDGING_HEADER = "FireworkSdk-Bridging-Header.h";
|
|
244
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
245
|
+
SWIFT_VERSION = 5.0;
|
|
246
|
+
};
|
|
247
|
+
name = Debug;
|
|
248
|
+
};
|
|
249
|
+
58B511F11A9E6C8500147676 /* Release */ = {
|
|
250
|
+
isa = XCBuildConfiguration;
|
|
251
|
+
buildSettings = {
|
|
252
|
+
HEADER_SEARCH_PATHS = (
|
|
253
|
+
"$(inherited)",
|
|
254
|
+
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
|
|
255
|
+
"$(SRCROOT)/../../../React/**",
|
|
256
|
+
"$(SRCROOT)/../../react-native/React/**",
|
|
257
|
+
);
|
|
258
|
+
LIBRARY_SEARCH_PATHS = "$(inherited)";
|
|
259
|
+
OTHER_LDFLAGS = "-ObjC";
|
|
260
|
+
PRODUCT_NAME = FireworkSdk;
|
|
261
|
+
SKIP_INSTALL = YES;
|
|
262
|
+
SWIFT_OBJC_BRIDGING_HEADER = "FireworkSdk-Bridging-Header.h";
|
|
263
|
+
SWIFT_VERSION = 5.0;
|
|
264
|
+
};
|
|
265
|
+
name = Release;
|
|
266
|
+
};
|
|
267
|
+
/* End XCBuildConfiguration section */
|
|
268
|
+
|
|
269
|
+
/* Begin XCConfigurationList section */
|
|
270
|
+
58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "FireworkSdk" */ = {
|
|
271
|
+
isa = XCConfigurationList;
|
|
272
|
+
buildConfigurations = (
|
|
273
|
+
58B511ED1A9E6C8500147676 /* Debug */,
|
|
274
|
+
58B511EE1A9E6C8500147676 /* Release */,
|
|
275
|
+
);
|
|
276
|
+
defaultConfigurationIsVisible = 0;
|
|
277
|
+
defaultConfigurationName = Release;
|
|
278
|
+
};
|
|
279
|
+
58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "FireworkSdk" */ = {
|
|
280
|
+
isa = XCConfigurationList;
|
|
281
|
+
buildConfigurations = (
|
|
282
|
+
58B511F01A9E6C8500147676 /* Debug */,
|
|
283
|
+
58B511F11A9E6C8500147676 /* Release */,
|
|
284
|
+
);
|
|
285
|
+
defaultConfigurationIsVisible = 0;
|
|
286
|
+
defaultConfigurationName = Release;
|
|
287
|
+
};
|
|
288
|
+
/* End XCConfigurationList section */
|
|
289
|
+
};
|
|
290
|
+
rootObject = 58B511D31A9E6C8500147676 /* Project object */;
|
|
291
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FireworkJsEvent.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jeff Zheng on 2021/12/21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
enum FWEventName: String, CaseIterable {
|
|
11
|
+
case SDKInit = "fw:sdk-init"
|
|
12
|
+
case CustomCTAClick = "fw:custom-cta-click"
|
|
13
|
+
case VideoPlayback = "fw:video-playback"
|
|
14
|
+
case VideoFeedClick = "fw:video-feed-click"
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
enum VideoPlaybackSubEventName: String {
|
|
18
|
+
case Impression = "fw:video:impression"
|
|
19
|
+
case Start = "fw:video:start"
|
|
20
|
+
case FirstQuartile = "fw:video:first-quartile"
|
|
21
|
+
case Midpoint = "fw:video:midpoint"
|
|
22
|
+
case ThirdQuartile = "fw:video:third-quartile"
|
|
23
|
+
case Complete = "fw:video:complete"
|
|
24
|
+
case AdEnd = "fw:video:ad-end"
|
|
25
|
+
case ClickCTA = "fw:video:click-cta"
|
|
26
|
+
case ClickShare = "fw:video:click-share"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
enum ShoppingEventName: String, CaseIterable {
|
|
30
|
+
case UpdateProductDetails = "fw:shopping:update-product-details"
|
|
31
|
+
case WillDisplayProduct = "fw:shopping:will-display-product"
|
|
32
|
+
case AddToCart = "fw:shopping:add-to-cart"
|
|
33
|
+
case ClickCartIcon = "fw:shopping:click-cart-icon"
|
|
34
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Firework+JsEvent.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jeff on 2021/12/21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import FireworkVideo
|
|
10
|
+
|
|
11
|
+
extension FireworkVideoSDKError {
|
|
12
|
+
var jsErrorName: String {
|
|
13
|
+
switch self {
|
|
14
|
+
case .missingAppID:
|
|
15
|
+
return "missingAppID"
|
|
16
|
+
case .missingPublisherID:
|
|
17
|
+
return "missingPublisherID"
|
|
18
|
+
case .authenticationFailure:
|
|
19
|
+
return "authenticationFailure"
|
|
20
|
+
default:
|
|
21
|
+
return "unknow"
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
extension VideoPlaybackDetails {
|
|
27
|
+
var jsObject: [String: Any?] {
|
|
28
|
+
[ "videoId": videoID,
|
|
29
|
+
"duration": duration,
|
|
30
|
+
"caption": caption,
|
|
31
|
+
"badge": badge,
|
|
32
|
+
"playerSize": ["width": playerSize.width,
|
|
33
|
+
"height": playerSize.height],
|
|
34
|
+
"hasCTA": hasCTA]
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
extension VideoFeedError {
|
|
39
|
+
var jsObject: [String: String] {
|
|
40
|
+
var error: [String: String]
|
|
41
|
+
switch self {
|
|
42
|
+
case .contentSourceError(let sourceError):
|
|
43
|
+
error = ["name": "contentSourceError", "reason": sourceError.recoverySuggestion ?? "contentSourceError"]
|
|
44
|
+
case .videoShareError(let shareError):
|
|
45
|
+
error = ["name": "videoShareError", "reason": shareError.recoverySuggestion ?? "videoShareError"]
|
|
46
|
+
case .unknownError(let unknownError):
|
|
47
|
+
error = ["name": "unknownError", "reason": unknownError.localizedDescription]
|
|
48
|
+
default:
|
|
49
|
+
error = ["name": "unknownError", "reason": "unknownError"]
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return error
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
extension FeedEventDetails {
|
|
57
|
+
var jsObject: [String: Any] {
|
|
58
|
+
return ["index": index,
|
|
59
|
+
"videoId": videoID,
|
|
60
|
+
"duration": duration]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RCTConvert+FireworkSdk.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jeff on 2021/12/20.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import UIKit
|
|
10
|
+
import FireworkVideo
|
|
11
|
+
|
|
12
|
+
extension RCTConvert {
|
|
13
|
+
static func videoPlayerContentConfiguration(_ config: [String: AnyObject]) -> VideoPlayerContentConfiguration {
|
|
14
|
+
var finalConfig = VideoPlayerContentConfiguration()
|
|
15
|
+
|
|
16
|
+
if let style = videoPlayerStyle(config["playerStyle"] as? String) {
|
|
17
|
+
finalConfig.playerStyle = style
|
|
18
|
+
}
|
|
19
|
+
if let action = videoCompleteAction(config["videoCompleteAction"] as? String) {
|
|
20
|
+
finalConfig.videoCompleteAction = action
|
|
21
|
+
}
|
|
22
|
+
if let showShareButton = config["showShareButton"] as? Bool {
|
|
23
|
+
finalConfig.shareButton.isHidden = showShareButton
|
|
24
|
+
}
|
|
25
|
+
if let ctaStyle = ctaButtonStyle(config["ctaButtonStyle"] as? Dictionary) {
|
|
26
|
+
finalConfig.ctaButton = ctaStyle
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return finalConfig
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static func videoPlayerStyle(_ style: String?) -> VideoPlayerContentConfiguration.VideoPlayerStyle? {
|
|
33
|
+
guard let style = style else {
|
|
34
|
+
return nil
|
|
35
|
+
}
|
|
36
|
+
if style == "fit" {
|
|
37
|
+
return .fit
|
|
38
|
+
} else {
|
|
39
|
+
return .fullBleed
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static func videoCompleteAction(_ action: String?) -> VideoPlayerContentConfiguration.VideoCompleteAction? {
|
|
44
|
+
guard let action = action else {
|
|
45
|
+
return nil
|
|
46
|
+
}
|
|
47
|
+
if action == "loop" {
|
|
48
|
+
return .loop
|
|
49
|
+
} else {
|
|
50
|
+
return .advanceToNext
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static func ctaButtonStyle(_ style: [String: AnyObject]?) -> ButtonContentConfiguration? {
|
|
55
|
+
guard let style = style else {
|
|
56
|
+
return nil
|
|
57
|
+
}
|
|
58
|
+
var btnContentConfig = ButtonContentConfiguration()
|
|
59
|
+
if let backgroundColor = style["backgroundColor"] as? String {
|
|
60
|
+
btnContentConfig.backgroundColor = backgroundColor.uicolor()
|
|
61
|
+
}
|
|
62
|
+
if let textColor = style["textColor"] as? String {
|
|
63
|
+
btnContentConfig.textColor = textColor.uicolor()
|
|
64
|
+
}
|
|
65
|
+
if let fontSize = style["fontSize"] as? Float {
|
|
66
|
+
btnContentConfig.font = UIFont.systemFont(ofSize: CGFloat(fontSize))
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return btnContentConfig
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static func mobileADConfiguration(_ config: [String: AnyObject]?) -> MobileADConfiguration? {
|
|
73
|
+
guard let config = config else {
|
|
74
|
+
return nil
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let jsonData = try? JSONSerialization.data(withJSONObject: config, options: .prettyPrinted)
|
|
78
|
+
guard let jsonData = jsonData else {
|
|
79
|
+
return nil
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
var result: MobileADConfiguration?
|
|
83
|
+
do {
|
|
84
|
+
result = try JSONDecoder().decode(MobileADConfiguration.self, from: jsonData)
|
|
85
|
+
} catch let error {
|
|
86
|
+
print(error.localizedDescription)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return result
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RCTConvert+Shopping.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jeff Zheng on 2021/12/31.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
extension RCTConvert {
|
|
11
|
+
static func buildProduct(_ product: [String: Any]?) -> Product? {
|
|
12
|
+
guard let product = product else {
|
|
13
|
+
return nil
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
let jsonData = try? JSONSerialization.data(withJSONObject: product, options: .prettyPrinted)
|
|
17
|
+
guard let jsonData = jsonData else {
|
|
18
|
+
return nil
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
var result: Product?
|
|
22
|
+
do {
|
|
23
|
+
result = try JSONDecoder().decode(Product.self, from: jsonData)
|
|
24
|
+
} catch let error {
|
|
25
|
+
print(error.localizedDescription)
|
|
26
|
+
}
|
|
27
|
+
return result
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static func buildProductInfoViewConfiguration(_ config: [String: Any]?) -> ProductInfoViewConfiguration? {
|
|
31
|
+
guard let config = config else {
|
|
32
|
+
return nil
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let jsonData = try? JSONSerialization.data(withJSONObject: config, options: .prettyPrinted)
|
|
36
|
+
guard let jsonData = jsonData else {
|
|
37
|
+
return nil
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var result: ProductInfoViewConfiguration?
|
|
41
|
+
do {
|
|
42
|
+
result = try JSONDecoder().decode(ProductInfoViewConfiguration.self, from: jsonData)
|
|
43
|
+
} catch let error {
|
|
44
|
+
print(error.localizedDescription)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return result
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RCTConvert+FWVideoFeed.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jeff Zheng on 2021/12/22.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
extension VideFeedSourceType {
|
|
11
|
+
static var feedTypeMapper: [String: VideFeedSourceType] {
|
|
12
|
+
["discover": .discover,
|
|
13
|
+
"channel": .channel,
|
|
14
|
+
"playlist": .playlist]
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
extension VideoFeedMode {
|
|
19
|
+
static var feedModeMapper: [String: VideoFeedMode] {
|
|
20
|
+
["row": .row,
|
|
21
|
+
"column": .colume,
|
|
22
|
+
"grid": .grid]
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@objc
|
|
27
|
+
public extension RCTConvert {
|
|
28
|
+
static func videoFeedSourceType(_ type: String?) -> VideFeedSourceType {
|
|
29
|
+
guard let type = type else {
|
|
30
|
+
return .discover
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return .feedTypeMapper[type] ?? .discover
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static func videoFeedMode(_ type: String?) -> VideoFeedMode {
|
|
37
|
+
guard let type = type else {
|
|
38
|
+
return .row
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return .feedModeMapper[type] ?? .row
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static func videoFeedConfiguration(_ config: [String: AnyObject]?) -> VideoFeedConfiguration? {
|
|
45
|
+
guard let config = config else {
|
|
46
|
+
return nil
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
let jsonData = try? JSONSerialization.data(withJSONObject: config, options: .prettyPrinted)
|
|
50
|
+
guard let jsonData = jsonData else {
|
|
51
|
+
return nil
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return try? JSONDecoder().decode(VideoFeedConfiguration.self, from: jsonData)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
static func videoPlayerConfiguration(_ config: [String: AnyObject]?) -> VideoPlayerConfiguration? {
|
|
58
|
+
guard let config = config else {
|
|
59
|
+
return nil
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
let jsonData = try? JSONSerialization.data(withJSONObject: config, options: .prettyPrinted)
|
|
63
|
+
guard let jsonData = jsonData else {
|
|
64
|
+
return nil
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return try? JSONDecoder().decode(VideoPlayerConfiguration.self, from: jsonData)
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FireworkSdk+CTA.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jeff Zheng on 2021/12/21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import FireworkVideo
|
|
10
|
+
|
|
11
|
+
extension FireworkSDKModule: FireworkVideoCTADelegate {
|
|
12
|
+
func handleCustomCTAClick(_ viewController: PlayerViewController, url: URL) -> Bool {
|
|
13
|
+
sendEvent(withName: FWEventName.CustomCTAClick.rawValue, body: [url: url])
|
|
14
|
+
|
|
15
|
+
return customCTAClickEnabled
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
//
|
|
2
|
+
// FireworkSdk+EventTracking.swift
|
|
3
|
+
// react-native-firework-sdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Jeff Zheng on 2021/12/21.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
import FireworkVideo
|
|
10
|
+
|
|
11
|
+
extension FireworkSDKModule: FireworkVideoPlaybackDelegate {
|
|
12
|
+
func fireworkVideoDidPause(_ videoPlayback: VideoPlaybackDetails) {
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
func fireworkVideoDidResume(_ videoPlayback: VideoPlaybackDetails) {
|
|
17
|
+
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
func fireworkVideoDidRecordImpression(_ videoPlayback: VideoPlaybackDetails) {
|
|
21
|
+
guard enableVideoPlayBackEvent else { return }
|
|
22
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Impression.rawValue: videoPlayback.jsObject])
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
func fireworkVideoDidStartPlaying(_ videoPlayback: VideoPlaybackDetails) {
|
|
26
|
+
guard enableVideoPlayBackEvent else { return }
|
|
27
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Start.rawValue: videoPlayback.jsObject])
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
func fireworkVideoReachedFirstQuartile(_ videoPlayback: VideoPlaybackDetails) {
|
|
31
|
+
guard enableVideoPlayBackEvent else { return }
|
|
32
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.FirstQuartile.rawValue: videoPlayback.jsObject])
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
func fireworkVideoReachedMidPoint(_ videoPlayback: VideoPlaybackDetails) {
|
|
36
|
+
guard enableVideoPlayBackEvent else { return }
|
|
37
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Midpoint.rawValue: videoPlayback.jsObject])
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
func fireworkVideoReachedThirdQuartile(_ videoPlayback: VideoPlaybackDetails) {
|
|
41
|
+
guard enableVideoPlayBackEvent else { return }
|
|
42
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.ThirdQuartile.rawValue: videoPlayback.jsObject])
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
func fireworkVideoDidFinishPlaying(_ videoPlayback: VideoPlaybackDetails) {
|
|
46
|
+
guard enableVideoPlayBackEvent else { return }
|
|
47
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.Complete.rawValue: videoPlayback.jsObject])
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
func fireworkVideoDidTapCTAButton(_ videoPlayback: VideoPlaybackDetails) {
|
|
51
|
+
guard enableVideoPlayBackEvent else { return }
|
|
52
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.ClickCTA.rawValue: videoPlayback.jsObject])
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
func fireworkVideoDidTapShareButton(_ videoPlayback: VideoPlaybackDetails) {
|
|
56
|
+
guard enableVideoPlayBackEvent else { return }
|
|
57
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.ClickShare.rawValue: videoPlayback.jsObject])
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
func fireworkVideoDidStartPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
|
|
61
|
+
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
func fireworkVideoDidFinishPlayingAd(_ videoPlayback: VideoPlaybackDetails) {
|
|
65
|
+
guard enableVideoPlayBackEvent else { return }
|
|
66
|
+
sendEvent(withName: FWEventName.VideoPlayback.rawValue, body: [VideoPlaybackSubEventName.AdEnd.rawValue: videoPlayback.jsObject])
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
extension FireworkSDKModule: FireworkVideoFeedDelegate {
|
|
71
|
+
func fireworkVideoDidTapVideoThumbnail(_ eventDetails: FeedEventDetails) {
|
|
72
|
+
sendEvent(withName: FWEventName.VideoFeedClick.rawValue, body: eventDetails.jsObject)
|
|
73
|
+
}
|
|
74
|
+
}
|