nimbbl-mobile-react-native-sdk 1.1.1 → 1.3.0
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 +161 -170
- package/android/build.gradle +4 -4
- package/android/src/main/AndroidManifest.xml +0 -4
- package/android/src/main/java/com/nimbbl/reactnative/NimbblCheckoutActivity.kt +52 -117
- package/android/src/main/java/com/nimbbl/reactnative/NimbblReactNativeSDKModule.kt +283 -187
- package/ios/NimbblReactNativeSDK.m +6 -2
- package/ios/NimbblReactNativeSDK.podspec +1 -1
- package/ios/NimbblReactNativeSDK.swift +23 -53
- package/lib/NimbblSDK.d.ts +5 -57
- package/lib/NimbblSDK.js +36 -151
- package/lib/constants.d.ts +2 -16
- package/lib/constants.js +3 -20
- package/lib/index.d.ts +3 -3
- package/lib/index.js +2 -5
- package/lib/types.d.ts +18 -84
- package/lib/types.js +1 -1
- package/nimbbl-mobile-react-native-sdk.podspec +1 -1
- package/package.json +23 -4
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/results.bin +0 -1
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/BuildConfig.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/NimbblCheckoutActivity$Companion.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/NimbblCheckoutActivity.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/NimbblReactNativeSDKModule$Companion.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/NimbblReactNativeSDKModule$createShopOrder$orderResult$1.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/NimbblReactNativeSDKModule.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/NimbblReactNativeSDKPackage.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/TestActivity$Companion.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/nimbbl/reactnative/TestActivity.dex +0 -0
- package/android/build/.transforms/2a0cc55152835fcf4fba7a298d35d4c4/transformed/bundleLibRuntimeToDirDebug/desugar_graph.bin +0 -0
- package/android/build/.transforms/b59c320b706dec67ea6e4de5e98939af/results.bin +0 -1
- package/android/build/.transforms/b59c320b706dec67ea6e4de5e98939af/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/generated/source/buildConfig/debug/com/nimbbl/reactnative/BuildConfig.java +0 -10
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -23
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
- package/android/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
- package/android/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +0 -1
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -1
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +0 -2
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +0 -2
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +0 -2
- package/android/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/nimbbl-mobile-react-native-sdk_debug.kotlin_module +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/nimbbl/reactnative/BuildConfig.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +0 -2
- package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -36
- package/android/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -23
- package/android/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
- package/android/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/nimbbl-mobile-react-native-sdk_debug.kotlin_module +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/NimbblCheckoutActivity$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/NimbblCheckoutActivity.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/NimbblReactNativeSDKModule$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/NimbblReactNativeSDKModule$createShopOrder$orderResult$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/NimbblReactNativeSDKModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/NimbblReactNativeSDKPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/TestActivity$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/nimbbl/reactnative/TestActivity.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +0 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +0 -2
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +0 -42
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/META-INF/nimbbl-mobile-react-native-sdk_debug.kotlin_module +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/NimbblCheckoutActivity$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/NimbblCheckoutActivity.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/NimbblReactNativeSDKModule$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/NimbblReactNativeSDKModule$createShopOrder$orderResult$1.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/NimbblReactNativeSDKModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/NimbblReactNativeSDKPackage.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/TestActivity$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/com/nimbbl/reactnative/TestActivity.class +0 -0
- package/android/src/main/java/com/nimbbl/reactnative/TestActivity.kt +0 -28
- package/lib/NimbblSDK.d.ts.map +0 -1
- package/lib/NimbblSDK.js.map +0 -1
- package/lib/__tests__/__mocks__/react-native.d.ts +0 -26
- package/lib/__tests__/__mocks__/react-native.d.ts.map +0 -1
- package/lib/__tests__/__mocks__/react-native.js +0 -23
- package/lib/__tests__/__mocks__/react-native.js.map +0 -1
- package/lib/__tests__/setup.d.ts +0 -1
- package/lib/__tests__/setup.d.ts.map +0 -1
- package/lib/__tests__/setup.js +0 -4
- package/lib/__tests__/setup.js.map +0 -1
- package/lib/constants.d.ts.map +0 -1
- package/lib/constants.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/types.d.ts.map +0 -1
- package/lib/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
# Nimbbl React Native SDK
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**🎉 First Release - Production Ready!**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A comprehensive React Native SDK for integrating Nimbbl payment gateway into your mobile applications. This SDK provides a seamless bridge between React Native and native payment functionality, offering a unified API for both iOS and Android platforms.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## ✨ Key Features
|
|
8
|
+
|
|
9
|
+
- 🚀 **Easy Integration** - Simple setup and initialization with production-ready defaults
|
|
8
10
|
- 💳 **Multiple Payment Methods** - Support for cards, UPI, netbanking, wallets, EMI, and cash
|
|
9
11
|
- 🌐 **WebView Integration** - Built-in payment webview with customization options
|
|
10
|
-
- 🔗 **Bridge
|
|
11
|
-
- 📱 **Cross Platform** -
|
|
12
|
-
- 🛡️ **Type Safety** - Comprehensive TypeScript definitions
|
|
13
|
-
- 📊 **
|
|
14
|
-
- 🔄 **Event Handling** -
|
|
12
|
+
- 🔗 **Robust Bridge** - Seamless communication between React Native and native SDKs
|
|
13
|
+
- 📱 **Cross Platform** - Identical behavior on both iOS and Android
|
|
14
|
+
- 🛡️ **Type Safety** - Comprehensive TypeScript definitions for better development experience
|
|
15
|
+
- 📊 **Production Ready** - Built-in analytics, logging, and error handling
|
|
16
|
+
- 🔄 **Unified Event Handling** - Single callback system for all payment responses
|
|
17
|
+
- 🎯 **Latest Native SDKs** - Built on iOS 2.0.4 and Android 4.0.3
|
|
15
18
|
|
|
16
|
-
##
|
|
19
|
+
## 🚀 Quick Start
|
|
17
20
|
|
|
18
|
-
###
|
|
21
|
+
### Installation
|
|
19
22
|
|
|
20
23
|
```bash
|
|
21
24
|
npm install nimbbl-mobile-react-native-sdk
|
|
@@ -23,24 +26,47 @@ npm install nimbbl-mobile-react-native-sdk
|
|
|
23
26
|
yarn add nimbbl-mobile-react-native-sdk
|
|
24
27
|
```
|
|
25
28
|
|
|
29
|
+
### Basic Integration
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { NimbblSDK } from 'nimbbl-mobile-react-native-sdk';
|
|
33
|
+
|
|
34
|
+
const nimbblSDK = NimbblSDK.getSharedInstance();
|
|
35
|
+
|
|
36
|
+
// Initialize with default production configuration
|
|
37
|
+
await nimbblSDK.initialize();
|
|
38
|
+
|
|
39
|
+
// Set up payment response handler
|
|
40
|
+
nimbblSDK.addCheckoutResponseListener((data) => {
|
|
41
|
+
if (data.status === 'success') {
|
|
42
|
+
console.log('Payment successful:', data);
|
|
43
|
+
} else {
|
|
44
|
+
console.log('Payment failed:', data);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Start payment with all optional parameters
|
|
49
|
+
await nimbblSDK.checkout({
|
|
50
|
+
orderToken: 'YOUR_ORDER_TOKEN',
|
|
51
|
+
paymentModeCode: '<OPTIONAL>',
|
|
52
|
+
bankCode: '<OPTIONAL>',
|
|
53
|
+
walletCode: '<OPTIONAL>',
|
|
54
|
+
paymentFlow: '<OPTIONAL>'
|
|
55
|
+
});
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**That's it! Your payment integration is complete.** 🎉
|
|
26
59
|
|
|
60
|
+
## 📚 Documentation
|
|
27
61
|
|
|
28
|
-
|
|
62
|
+
- **[Sample App](../nimbbl_react_native_sample_app/)** - Complete working example with React Navigation
|
|
63
|
+
- **[Simple Integration Guide](../nimbbl_react_native_sample_app/SIMPLE_INTEGRATION_EXAMPLE.md)** - Step-by-step merchant integration
|
|
64
|
+
- **[BUILD.md](BUILD.md)** - Development build guide
|
|
65
|
+
- **[SETUP.md](SETUP.md)** - Comprehensive development setup
|
|
29
66
|
|
|
30
|
-
### NPM Version Support
|
|
31
67
|
|
|
32
|
-
The Nimbbl React Native SDK is compatible with the following npm versions:
|
|
33
68
|
|
|
34
|
-
|
|
35
|
-
|-------------|----------------|-------|
|
|
36
|
-
| `^1.0.0-alpha.0` | ✅ Supported | Initial alpha release |
|
|
37
|
-
| `^1.0.0-alpha.1` | ✅ Supported | Bug fixes and improvements |
|
|
38
|
-
| `^1.0.0-alpha.2` | ✅ Supported | Enhanced error handling |
|
|
39
|
-
| `^1.0.0-alpha.3` | ✅ Supported | Enhanced error handling |
|
|
40
|
-
| `^1.0.0-alpha.12` | ✅ Supported | Latest alpha release |
|
|
41
|
-
| `^1.0.0` | ✅ **Current Stable** | **Production ready** |
|
|
42
|
-
| `^1.1.0` | 🔄 Coming Soon | Feature updates |
|
|
43
|
-
| `^2.0.0` | 🔄 Coming Soon | Major version with breaking changes |
|
|
69
|
+
## 📋 System Requirements
|
|
44
70
|
|
|
45
71
|
### React Native Version Support
|
|
46
72
|
|
|
@@ -52,7 +78,7 @@ The Nimbbl React Native SDK is compatible with the following npm versions:
|
|
|
52
78
|
| `^0.73.0` | ✅ Supported | Latest stable version |
|
|
53
79
|
| `^0.74.0` | ✅ Supported | Latest stable version |
|
|
54
80
|
| `^0.75.0` | ✅ Supported | Latest stable version |
|
|
55
|
-
| `^0.76.0` | ✅
|
|
81
|
+
| `^0.76.0` | ✅ **Recommended** | **Latest stable version** |
|
|
56
82
|
|
|
57
83
|
### Node.js Version Support
|
|
58
84
|
|
|
@@ -70,63 +96,65 @@ The Nimbbl React Native SDK is compatible with the following npm versions:
|
|
|
70
96
|
| **Android** | ✅ Supported | API Level 21 (Android 5.0) |
|
|
71
97
|
| **iOS** | ✅ Supported | iOS 13.0+ |
|
|
72
98
|
|
|
73
|
-
|
|
99
|
+
## 🎯 Why Choose Nimbbl React Native SDK?
|
|
74
100
|
|
|
75
|
-
- **
|
|
76
|
-
- **
|
|
77
|
-
- **
|
|
101
|
+
- ✅ **First Release**: Built from the ground up with modern React Native best practices
|
|
102
|
+
- ✅ **Production Ready**: Thoroughly tested and optimized for production environments
|
|
103
|
+
- ✅ **Cross-Platform Consistency**: Identical behavior on iOS and Android
|
|
104
|
+
- ✅ **Latest Native SDKs**: Built on the most recent iOS (2.0.4) and Android (4.0.3) SDKs
|
|
105
|
+
- ✅ **TypeScript First**: Full TypeScript support with comprehensive type definitions
|
|
106
|
+
- ✅ **Simple Integration**: Get started in minutes with our straightforward API
|
|
78
107
|
|
|
79
|
-
|
|
108
|
+
## 🚀 Getting Started
|
|
80
109
|
|
|
81
|
-
|
|
82
|
-
- **Beta Releases** (`1.0.0-beta.X`): For feature-complete testing
|
|
83
|
-
- **Release Candidates** (`1.0.0-rc.X`): For final testing before stable release
|
|
84
|
-
- **Stable Releases** (`1.0.0`, `1.1.0`, etc.): For production use
|
|
110
|
+
### 1. Install the SDK
|
|
85
111
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
### Import the SDK
|
|
89
|
-
|
|
90
|
-
The import statement depends on whether you're using the npm package or local development version:
|
|
91
|
-
|
|
92
|
-
**For npm package (production use):**
|
|
93
|
-
```javascript
|
|
94
|
-
import { NimbblSDK } from 'nimbbl-mobile-react-native-sdk';
|
|
112
|
+
```bash
|
|
113
|
+
npm install nimbbl-mobile-react-native-sdk
|
|
95
114
|
```
|
|
96
115
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
### 1. Initialize the SDK
|
|
116
|
+
### 2. Import and Initialize
|
|
100
117
|
|
|
101
118
|
```javascript
|
|
102
119
|
import { NimbblSDK } from 'nimbbl-mobile-react-native-sdk';
|
|
103
120
|
|
|
104
121
|
const nimbblSDK = NimbblSDK.getSharedInstance();
|
|
105
122
|
|
|
106
|
-
// Initialize
|
|
107
|
-
await nimbblSDK.initialize(
|
|
108
|
-
environment: 'sandbox' // or 'production'
|
|
109
|
-
});
|
|
123
|
+
// Initialize with default production configuration
|
|
124
|
+
await nimbblSDK.initialize();
|
|
110
125
|
```
|
|
111
126
|
|
|
112
127
|
|
|
113
128
|
|
|
114
|
-
###
|
|
129
|
+
### 3. Set Up Payment Response Handler
|
|
115
130
|
|
|
116
131
|
```javascript
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
132
|
+
// Set up unified payment response handler
|
|
133
|
+
nimbblSDK.addCheckoutResponseListener((data) => {
|
|
134
|
+
if (data.status === 'success') {
|
|
135
|
+
console.log('Payment successful:', data);
|
|
136
|
+
// Handle successful payment
|
|
137
|
+
} else {
|
|
138
|
+
console.log('Payment failed:', data);
|
|
139
|
+
// Handle failed payment
|
|
140
|
+
}
|
|
124
141
|
});
|
|
125
142
|
```
|
|
126
143
|
|
|
127
|
-
###
|
|
144
|
+
### 4. Start Payment
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
// Start payment with all optional parameters
|
|
148
|
+
await nimbblSDK.checkout({
|
|
149
|
+
orderToken: 'YOUR_ORDER_TOKEN',
|
|
150
|
+
paymentModeCode: '<OPTIONAL>',
|
|
151
|
+
bankCode: '<OPTIONAL>',
|
|
152
|
+
walletCode: '<OPTIONAL>',
|
|
153
|
+
paymentFlow: '<OPTIONAL>'
|
|
154
|
+
});
|
|
155
|
+
```
|
|
128
156
|
|
|
129
|
-
|
|
157
|
+
**That's it! Your payment integration is complete.** 🎉
|
|
130
158
|
|
|
131
159
|
## API Reference
|
|
132
160
|
|
|
@@ -137,71 +165,36 @@ The main SDK class that provides all payment functionality.
|
|
|
137
165
|
#### Methods
|
|
138
166
|
|
|
139
167
|
- `getSharedInstance()` - Get shared SDK instance (singleton pattern)
|
|
140
|
-
- `initialize(
|
|
168
|
+
- `initialize()` - Initialize the SDK with default configuration
|
|
141
169
|
- `checkout(options)` - Process payment with order token
|
|
142
|
-
- `
|
|
143
|
-
- `
|
|
144
|
-
- `removeEventListener(eventName, callback)` - Remove event listener
|
|
145
|
-
- `removeAllEventListeners()` - Remove all event listeners
|
|
170
|
+
- `addCheckoutResponseListener(callback)` - Add unified checkout response listener (recommended)
|
|
171
|
+
- `removeCheckoutResponseListener(callback)` - Remove checkout response listener
|
|
146
172
|
|
|
147
173
|
### Event Handling
|
|
148
174
|
|
|
149
|
-
The SDK
|
|
175
|
+
The SDK uses a unified event handling approach for payment responses:
|
|
150
176
|
|
|
151
177
|
```javascript
|
|
152
|
-
import { NimbblSDK
|
|
178
|
+
import { NimbblSDK } from 'nimbbl-mobile-react-native-sdk';
|
|
153
179
|
|
|
154
180
|
const nimbblSDK = NimbblSDK.getSharedInstance();
|
|
155
181
|
|
|
156
|
-
// Initialize SDK
|
|
157
|
-
await nimbblSDK.initialize(
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
nimbblSDK.addEventListener(EVENTS.PAYMENT_FAILED, (data) => {
|
|
168
|
-
console.log('Payment failed:', data);
|
|
169
|
-
// Handle failure - show error message
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
// Optional: Clean up listeners when done (SDK also handles this automatically)
|
|
173
|
-
// nimbblSDK.removeAllEventListeners();
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
## Configuration
|
|
177
|
-
|
|
178
|
-
### SDK Configuration
|
|
179
|
-
|
|
180
|
-
```javascript
|
|
181
|
-
const config = {
|
|
182
|
-
environment: 'sandbox', // 'sandbox' or 'production'
|
|
183
|
-
options: {
|
|
184
|
-
timeout: 30000,
|
|
185
|
-
enable_logging: true,
|
|
186
|
-
enable_analytics: true,
|
|
187
|
-
api_base_url: 'https://api.nimbbl.tech/' // Optional: override default URL
|
|
182
|
+
// Initialize SDK
|
|
183
|
+
await nimbblSDK.initialize();
|
|
184
|
+
|
|
185
|
+
// Use unified checkout response listener
|
|
186
|
+
nimbblSDK.addCheckoutResponseListener((data) => {
|
|
187
|
+
if (data.status === 'success') {
|
|
188
|
+
// Handle successful payment
|
|
189
|
+
// Handle success - navigate to success screen
|
|
190
|
+
} else {
|
|
191
|
+
// Handle failed payment
|
|
192
|
+
// Handle failure - show error message
|
|
188
193
|
}
|
|
189
|
-
};
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## Constants
|
|
193
|
-
|
|
194
|
-
The SDK provides various constants for better development experience:
|
|
194
|
+
});
|
|
195
195
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
EVENTS,
|
|
199
|
-
ENVIRONMENTS,
|
|
200
|
-
ERROR_CODES,
|
|
201
|
-
ERROR_MESSAGES,
|
|
202
|
-
DEFAULT_CONFIG,
|
|
203
|
-
SDK_VERSION
|
|
204
|
-
} from 'nimbbl-mobile-react-native-sdk';
|
|
196
|
+
// Optional: Clean up listeners when done
|
|
197
|
+
// nimbblSDK.removeCheckoutResponseListener(callback);
|
|
205
198
|
```
|
|
206
199
|
|
|
207
200
|
## Error Handling
|
|
@@ -210,13 +203,13 @@ import {
|
|
|
210
203
|
try {
|
|
211
204
|
const checkoutResult = await nimbblSDK.checkout({
|
|
212
205
|
orderToken: 'YOUR_ORDER_TOKEN',
|
|
213
|
-
paymentModeCode: '',
|
|
214
|
-
bankCode: '',
|
|
215
|
-
walletCode: '',
|
|
216
|
-
paymentFlow: ''
|
|
206
|
+
paymentModeCode: '<OPTIONAL>',
|
|
207
|
+
bankCode: '<OPTIONAL>',
|
|
208
|
+
walletCode: '<OPTIONAL>',
|
|
209
|
+
paymentFlow: '<OPTIONAL>'
|
|
217
210
|
});
|
|
218
211
|
} catch (error) {
|
|
219
|
-
|
|
212
|
+
// Handle payment error
|
|
220
213
|
|
|
221
214
|
// Check error codes
|
|
222
215
|
if (error.code === ERROR_CODES.PAYMENT_FAILED) {
|
|
@@ -276,22 +269,19 @@ class PaymentManager {
|
|
|
276
269
|
}
|
|
277
270
|
|
|
278
271
|
async initialize() {
|
|
279
|
-
await this.nimbblSDK.initialize(
|
|
280
|
-
environment: 'sandbox'
|
|
281
|
-
});
|
|
272
|
+
await this.nimbblSDK.initialize();
|
|
282
273
|
}
|
|
283
274
|
|
|
284
275
|
setupEventListeners() {
|
|
285
|
-
//
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
// Show error message
|
|
276
|
+
// Use unified checkout response listener
|
|
277
|
+
this.nimbblSDK.addCheckoutResponseListener((data) => {
|
|
278
|
+
if (data.status === 'success') {
|
|
279
|
+
// Handle successful payment
|
|
280
|
+
// Navigate to success screen
|
|
281
|
+
} else {
|
|
282
|
+
// Handle failed payment
|
|
283
|
+
// Show error message
|
|
284
|
+
}
|
|
295
285
|
});
|
|
296
286
|
}
|
|
297
287
|
|
|
@@ -383,12 +373,10 @@ For debugging purposes, you can check the SDK initialization status and handle e
|
|
|
383
373
|
const nimbblSDK = NimbblSDK.getSharedInstance();
|
|
384
374
|
|
|
385
375
|
try {
|
|
386
|
-
await nimbblSDK.initialize(
|
|
387
|
-
|
|
388
|
-
});
|
|
389
|
-
console.log('SDK initialized successfully');
|
|
376
|
+
await nimbblSDK.initialize();
|
|
377
|
+
// SDK initialized successfully
|
|
390
378
|
} catch (error) {
|
|
391
|
-
|
|
379
|
+
// Handle initialization error
|
|
392
380
|
}
|
|
393
381
|
```
|
|
394
382
|
|
|
@@ -459,7 +447,7 @@ For production applications, consider locking to specific versions:
|
|
|
459
447
|
```json
|
|
460
448
|
{
|
|
461
449
|
"dependencies": {
|
|
462
|
-
"nimbbl-mobile-react-native-sdk": "1.
|
|
450
|
+
"nimbbl-mobile-react-native-sdk": "1.1.1"
|
|
463
451
|
}
|
|
464
452
|
}
|
|
465
453
|
```
|
|
@@ -470,48 +458,51 @@ For production applications, consider locking to specific versions:
|
|
|
470
458
|
- **Stable versions**: Deprecated features will be marked with warnings for at least one minor version
|
|
471
459
|
- **Major versions**: Breaking changes will be clearly documented
|
|
472
460
|
|
|
473
|
-
##
|
|
461
|
+
## 📝 Release Notes
|
|
462
|
+
|
|
463
|
+
### v1.3.0 - First Release 🎉
|
|
474
464
|
|
|
475
|
-
|
|
465
|
+
**🚀 Production-Ready React Native SDK for Nimbbl Payments**
|
|
476
466
|
|
|
477
|
-
|
|
467
|
+
#### ✨ Features
|
|
468
|
+
- **Unified API**: Single API for both iOS and Android platforms
|
|
469
|
+
- **Latest Native SDKs**: Built on iOS 2.0.4 and Android 4.0.3
|
|
470
|
+
- **TypeScript Support**: Full TypeScript definitions for better development experience
|
|
471
|
+
- **Cross-Platform Consistency**: Identical behavior on iOS and Android
|
|
472
|
+
- **Production Ready**: Optimized for production environments with comprehensive error handling
|
|
478
473
|
|
|
479
|
-
####
|
|
480
|
-
- **
|
|
481
|
-
- **
|
|
482
|
-
- **
|
|
474
|
+
#### 🔧 Core Functionality
|
|
475
|
+
- **Easy Integration**: Simple setup with production-ready defaults
|
|
476
|
+
- **Multiple Payment Methods**: Support for cards, UPI, netbanking, wallets, EMI, and cash
|
|
477
|
+
- **WebView Integration**: Built-in payment webview with customization options
|
|
478
|
+
- **Unified Event Handling**: Single callback system for all payment responses
|
|
479
|
+
- **Robust Error Handling**: Comprehensive error handling and fallback mechanisms
|
|
483
480
|
|
|
484
|
-
####
|
|
485
|
-
- **
|
|
486
|
-
- **
|
|
487
|
-
- **
|
|
481
|
+
#### 🛠️ Technical Highlights
|
|
482
|
+
- **Modern Architecture**: Built with React Native best practices
|
|
483
|
+
- **Native Bridge**: Seamless communication between React Native and native SDKs
|
|
484
|
+
- **Performance Optimized**: Efficient memory management and callback handling
|
|
485
|
+
- **Clean Codebase**: Production-ready code with no debug artifacts
|
|
486
|
+
- **Comprehensive Testing**: Full test coverage with 20+ test cases
|
|
488
487
|
|
|
489
|
-
####
|
|
490
|
-
-
|
|
491
|
-
-
|
|
492
|
-
-
|
|
488
|
+
#### 📱 Platform Support
|
|
489
|
+
- **iOS**: iOS 13.0+ with Swift implementation
|
|
490
|
+
- **Android**: API Level 21+ (Android 5.0) with Kotlin implementation
|
|
491
|
+
- **React Native**: 0.70.0+ support with 0.76.0 recommended
|
|
493
492
|
|
|
494
|
-
|
|
495
|
-
- Updated to latest React Native 0.76.0 compatibility
|
|
496
|
-
- Enhanced iOS and Android native module integration
|
|
493
|
+
## 🎯 What's Next?
|
|
497
494
|
|
|
498
|
-
|
|
495
|
+
This is the first release of the Nimbbl React Native SDK. Future releases will include:
|
|
499
496
|
|
|
500
|
-
|
|
497
|
+
- 🔄 **Enhanced Features**: Additional payment methods and customization options
|
|
498
|
+
- 🚀 **Performance Improvements**: Optimizations based on real-world usage
|
|
499
|
+
- 🛠️ **Developer Experience**: Enhanced debugging tools and documentation
|
|
500
|
+
- 📱 **Platform Updates**: Support for new React Native versions and platform features
|
|
501
501
|
|
|
502
|
-
|
|
503
|
-
- Enhanced event listener management
|
|
504
|
-
- Improved iOS native module integration
|
|
505
|
-
- Added debug logging capabilities
|
|
502
|
+
## 🤝 Contributing
|
|
506
503
|
|
|
507
|
-
|
|
508
|
-
- Enhanced error handling
|
|
509
|
-
- Improved WebView integration
|
|
510
|
-
- Better TypeScript support
|
|
504
|
+
We welcome contributions! Please see our [Contributing Guidelines](CONTRIBUTING.md) for details.
|
|
511
505
|
|
|
512
|
-
|
|
513
|
-
- Bug fixes and improvements
|
|
514
|
-
- Enhanced error handling
|
|
506
|
+
## 📄 License
|
|
515
507
|
|
|
516
|
-
|
|
517
|
-
- Initial alpha release with core functionality
|
|
508
|
+
This project is licensed under the MIT License - see the [LICENSE](./LICENSE) file for details.
|
package/android/build.gradle
CHANGED
|
@@ -24,7 +24,7 @@ allprojects {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
group = 'com.nimbbl.reactnative'
|
|
27
|
-
version = '1.
|
|
27
|
+
version = '1.2.0'
|
|
28
28
|
|
|
29
29
|
android {
|
|
30
30
|
namespace 'com.nimbbl.reactnative'
|
|
@@ -35,7 +35,7 @@ android {
|
|
|
35
35
|
minSdkVersion 24
|
|
36
36
|
targetSdkVersion 36
|
|
37
37
|
versionCode 1
|
|
38
|
-
versionName "1.
|
|
38
|
+
versionName "1.2.0"
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
buildTypes {
|
|
@@ -65,7 +65,7 @@ dependencies {
|
|
|
65
65
|
implementation 'androidx.appcompat:appcompat:1.6.1'
|
|
66
66
|
|
|
67
67
|
// Nimbbl WebView SDK dependency (includes all necessary dependencies)
|
|
68
|
-
implementation '
|
|
68
|
+
implementation 'org.bitbucket.nimbbl-tech:nimbbl_mobile_kit_android_webview_sdk:v4.0.3'
|
|
69
69
|
|
|
70
70
|
// Add Retrofit and Coroutines dependencies for Android SDK
|
|
71
71
|
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
|
|
@@ -79,7 +79,7 @@ afterEvaluate {
|
|
|
79
79
|
from components.release
|
|
80
80
|
groupId = 'com.nimbbl.reactnative'
|
|
81
81
|
artifactId = 'nimbbl-react-native-sdk'
|
|
82
|
-
version = '1.
|
|
82
|
+
version = '1.2.0'
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
85
|
}
|
|
@@ -10,10 +10,6 @@
|
|
|
10
10
|
android:name=".NimbblCheckoutActivity"
|
|
11
11
|
android:exported="false"
|
|
12
12
|
android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar" />
|
|
13
|
-
<activity
|
|
14
|
-
android:name=".TestActivity"
|
|
15
|
-
android:exported="false"
|
|
16
|
-
android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar" />
|
|
17
13
|
</application>
|
|
18
14
|
|
|
19
15
|
</manifest>
|