2 コミット 87c337d688 ... 69273a0657

作者 SHA1 メッセージ 日付
  leon 69273a0657 Merge branch 'v1.0.1' of http://git.atmob.com:28999/Atmob-Flutter/ElectronicAssistant into v1.0.1 1 年間 前
  leon 08830bd24e 新增ios引力引擎 1 年間 前
40 ファイル変更2380 行追加36 行削除
  1. 94 0
      ios/Podfile.lock
  2. 6 6
      ios/Runner.xcodeproj/project.pbxproj
  3. 6 6
      ios/Runner/Info.plist
  4. 1 0
      plugin/gravity_engine/example/ios/Flutter/Debug.xcconfig
  5. 1 0
      plugin/gravity_engine/example/ios/Flutter/Release.xcconfig
  6. 44 0
      plugin/gravity_engine/example/ios/Podfile
  7. 28 0
      plugin/gravity_engine/example/ios/Podfile.lock
  8. 117 3
      plugin/gravity_engine/example/ios/Runner.xcodeproj/project.pbxproj
  9. 3 0
      plugin/gravity_engine/example/ios/Runner.xcworkspace/contents.xcworkspacedata
  10. 4 4
      plugin/gravity_engine/example/ios/Runner/Info.plist
  11. 2 2
      plugin/gravity_engine/example/pubspec.lock
  12. 154 13
      plugin/gravity_engine/ios/Classes/GravityEnginePlugin.swift
  13. BIN
      plugin/gravity_engine/ios/GravityEngineSDK.framework/GravityEngineSDK
  14. 79 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEAutoTrackProtocol.h
  15. 22 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEAutoTrackPublicHeader.h
  16. 123 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEConfig.h
  17. 201 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEConstant.h
  18. 38 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEDeviceInfo.h
  19. 12 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEEditableEventModel.h
  20. 31 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEEventModel.h
  21. 19 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEFirstEventModel.h
  22. 21 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEOverwriteEventModel.h
  23. 35 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEPresetProperties.h
  24. 36 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GESecretKey.h
  25. 50 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GESecurityPolicy.h
  26. 21 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEUpdateEventModel.h
  27. 626 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GravityEngineSDK.h
  28. 38 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GravitySDK.h
  29. 50 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/UIView+GravityEngine.h
  30. BIN
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Info.plist
  31. 6 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/Modules/module.modulemap
  32. 125 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/PrivacyInfo.xcprivacy
  33. BIN
      plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeDirectory
  34. BIN
      plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeRequirements
  35. BIN
      plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeRequirements-1
  36. 372 0
      plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeResources
  37. BIN
      plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeSignature
  38. 10 0
      plugin/gravity_engine/ios/gravity_engine.podspec
  39. 2 2
      pubspec.lock
  40. 3 0
      pubspec.yaml

+ 94 - 0
ios/Podfile.lock

@@ -4,7 +4,50 @@ PODS:
   - connectivity_plus (0.0.1):
     - Flutter
     - FlutterMacOS
+  - device_info_plus (0.0.1):
+    - Flutter
+  - DKImagePickerController/Core (4.3.9):
+    - DKImagePickerController/ImageDataManager
+    - DKImagePickerController/Resource
+  - DKImagePickerController/ImageDataManager (4.3.9)
+  - DKImagePickerController/PhotoGallery (4.3.9):
+    - DKImagePickerController/Core
+    - DKPhotoGallery
+  - DKImagePickerController/Resource (4.3.9)
+  - DKPhotoGallery (0.0.19):
+    - DKPhotoGallery/Core (= 0.0.19)
+    - DKPhotoGallery/Model (= 0.0.19)
+    - DKPhotoGallery/Preview (= 0.0.19)
+    - DKPhotoGallery/Resource (= 0.0.19)
+    - SDWebImage
+    - SwiftyGif
+  - DKPhotoGallery/Core (0.0.19):
+    - DKPhotoGallery/Model
+    - DKPhotoGallery/Preview
+    - SDWebImage
+    - SwiftyGif
+  - DKPhotoGallery/Model (0.0.19):
+    - SDWebImage
+    - SwiftyGif
+  - DKPhotoGallery/Preview (0.0.19):
+    - DKPhotoGallery/Model
+    - DKPhotoGallery/Resource
+    - SDWebImage
+    - SwiftyGif
+  - DKPhotoGallery/Resource (0.0.19):
+    - SDWebImage
+    - SwiftyGif
+  - file_picker (0.0.1):
+    - DKImagePickerController/PhotoGallery
+    - Flutter
   - Flutter (1.0.0)
+  - flutter_foreground_task (0.0.1):
+    - Flutter
+  - gravity_engine (0.0.1):
+    - Flutter
+  - in_app_purchase_storekit (0.0.1):
+    - Flutter
+    - FlutterMacOS
   - just_audio (0.0.1):
     - Flutter
   - MMKV (1.3.9):
@@ -21,9 +64,16 @@ PODS:
   - record_darwin (1.0.0):
     - Flutter
     - FlutterMacOS
+  - SDWebImage (5.19.0):
+    - SDWebImage/Core (= 5.19.0)
+  - SDWebImage/Core (5.19.0)
+  - shared_preferences_foundation (0.0.1):
+    - Flutter
+    - FlutterMacOS
   - sqflite (0.0.3):
     - Flutter
     - FlutterMacOS
+  - SwiftyGif (5.4.5)
   - url_launcher_ios (0.0.1):
     - Flutter
   - video_player_avfoundation (0.0.1):
@@ -34,34 +84,63 @@ PODS:
   - webview_flutter_wkwebview (0.0.1):
     - Flutter
     - FlutterMacOS
+  - wechat_kit (6.0.1):
+    - Flutter
+    - wechat_kit/pay (= 6.0.1)
+    - wechat_kit/vendor (= 6.0.1)
+  - wechat_kit/pay (6.0.1):
+    - Flutter
+  - wechat_kit/vendor (6.0.1):
+    - Flutter
 
 DEPENDENCIES:
   - audio_session (from `.symlinks/plugins/audio_session/ios`)
   - connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
+  - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
+  - file_picker (from `.symlinks/plugins/file_picker/ios`)
   - Flutter (from `Flutter`)
+  - flutter_foreground_task (from `.symlinks/plugins/flutter_foreground_task/ios`)
+  - gravity_engine (from `.symlinks/plugins/gravity_engine/ios`)
+  - in_app_purchase_storekit (from `.symlinks/plugins/in_app_purchase_storekit/darwin`)
   - just_audio (from `.symlinks/plugins/just_audio/ios`)
   - mmkv_ios (from `.symlinks/plugins/mmkv_ios/ios`)
   - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
   - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
   - record_darwin (from `.symlinks/plugins/record_darwin/ios`)
+  - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
   - sqflite (from `.symlinks/plugins/sqflite/darwin`)
   - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
   - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
   - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
   - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`)
+  - wechat_kit (from `.symlinks/plugins/wechat_kit/ios`)
 
 SPEC REPOS:
   trunk:
+    - DKImagePickerController
+    - DKPhotoGallery
     - MMKV
     - MMKVCore
+    - SDWebImage
+    - SwiftyGif
 
 EXTERNAL SOURCES:
   audio_session:
     :path: ".symlinks/plugins/audio_session/ios"
   connectivity_plus:
     :path: ".symlinks/plugins/connectivity_plus/darwin"
+  device_info_plus:
+    :path: ".symlinks/plugins/device_info_plus/ios"
+  file_picker:
+    :path: ".symlinks/plugins/file_picker/ios"
   Flutter:
     :path: Flutter
+  flutter_foreground_task:
+    :path: ".symlinks/plugins/flutter_foreground_task/ios"
+  gravity_engine:
+    :path: ".symlinks/plugins/gravity_engine/ios"
+  in_app_purchase_storekit:
+    :path: ".symlinks/plugins/in_app_purchase_storekit/darwin"
   just_audio:
     :path: ".symlinks/plugins/just_audio/ios"
   mmkv_ios:
@@ -72,6 +151,8 @@ EXTERNAL SOURCES:
     :path: ".symlinks/plugins/path_provider_foundation/darwin"
   record_darwin:
     :path: ".symlinks/plugins/record_darwin/ios"
+  shared_preferences_foundation:
+    :path: ".symlinks/plugins/shared_preferences_foundation/darwin"
   sqflite:
     :path: ".symlinks/plugins/sqflite/darwin"
   url_launcher_ios:
@@ -82,11 +163,20 @@ EXTERNAL SOURCES:
     :path: ".symlinks/plugins/wakelock_plus/ios"
   webview_flutter_wkwebview:
     :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"
+  wechat_kit:
+    :path: ".symlinks/plugins/wechat_kit/ios"
 
 SPEC CHECKSUMS:
   audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
   connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
+  device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
+  DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
+  DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
+  file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
   Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+  flutter_foreground_task: 21ef182ab0a29a3005cc72cd70e5f45cb7f7f817
+  gravity_engine: d352c1055ad53c3e6e723f04e3d6db51932a17ee
+  in_app_purchase_storekit: 8c3b0b3eb1b0f04efbff401c3de6266d4258d433
   just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
   MMKV: 817ba1eea17421547e01e087285606eb270a8dcb
   mmkv_ios: 51a53dffa3e2bb8b743762514c754666abab2a6c
@@ -94,11 +184,15 @@ SPEC CHECKSUMS:
   package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
   path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
   record_darwin: df0a677188e5fed18472550298e675f19ddaffbe
+  SDWebImage: 981fd7e860af070920f249fd092420006014c3eb
+  shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
   sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
+  SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
   url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
   video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
   wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
   webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4
+  wechat_kit: adf5c6cda47789e63e51c6c194df9f2a85e87455
 
 PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796
 

+ 6 - 6
ios/Runner.xcodeproj/project.pbxproj

@@ -472,14 +472,14 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = K4782Q3LXH;
+				DEVELOPMENT_TEAM = S3Y6HGPL2S;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.atmob.elecasst.electronicAssistant;
+				PRODUCT_BUNDLE_IDENTIFIER = com.niannian.manyue;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -658,14 +658,14 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = K4782Q3LXH;
+				DEVELOPMENT_TEAM = S3Y6HGPL2S;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.atmob.elecasst.electronicAssistant;
+				PRODUCT_BUNDLE_IDENTIFIER = com.niannian.manyue;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@@ -684,14 +684,14 @@
 				CODE_SIGN_IDENTITY = "Apple Development";
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
-				DEVELOPMENT_TEAM = K4782Q3LXH;
+				DEVELOPMENT_TEAM = S3Y6HGPL2S;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.atmob.elecasst.electronicAssistant;
+				PRODUCT_BUNDLE_IDENTIFIER = com.niannian.manyue;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";

+ 6 - 6
ios/Runner/Info.plist

@@ -2,6 +2,8 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
+	<key>CADisableMinimumFrameDurationOnPhone</key>
+	<true/>
 	<key>CFBundleDevelopmentRegion</key>
 	<string>$(DEVELOPMENT_LANGUAGE)</string>
 	<key>CFBundleDisplayName</key>
@@ -24,6 +26,10 @@
 	<string>$(FLUTTER_BUILD_NUMBER)</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
+	<key>NSMicrophoneUsageDescription</key>
+	<string>谈话录音功能</string>
+	<key>UIApplicationSupportsIndirectInputEvents</key>
+	<true/>
 	<key>UILaunchStoryboardName</key>
 	<string>LaunchScreen</string>
 	<key>UIMainStoryboardFile</key>
@@ -41,11 +47,5 @@
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
-	<key>CADisableMinimumFrameDurationOnPhone</key>
-	<true/>
-	<key>UIApplicationSupportsIndirectInputEvents</key>
-	<true/>
-	<key>NSMicrophoneUsageDescription</key>
-    <string>谈话录音功能</string>
 </dict>
 </plist>

+ 1 - 0
plugin/gravity_engine/example/ios/Flutter/Debug.xcconfig

@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
 #include "Generated.xcconfig"

+ 1 - 0
plugin/gravity_engine/example/ios/Flutter/Release.xcconfig

@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
 #include "Generated.xcconfig"

+ 44 - 0
plugin/gravity_engine/example/ios/Podfile

@@ -0,0 +1,44 @@
+# Uncomment this line to define a global platform for your project
+# platform :ios, '12.0'
+
+# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
+ENV['COCOAPODS_DISABLE_STATS'] = 'true'
+
+project 'Runner', {
+  'Debug' => :debug,
+  'Profile' => :release,
+  'Release' => :release,
+}
+
+def flutter_root
+  generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
+  unless File.exist?(generated_xcode_build_settings_path)
+    raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
+  end
+
+  File.foreach(generated_xcode_build_settings_path) do |line|
+    matches = line.match(/FLUTTER_ROOT\=(.*)/)
+    return matches[1].strip if matches
+  end
+  raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
+end
+
+require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
+
+flutter_ios_podfile_setup
+
+target 'Runner' do
+  use_frameworks!
+  use_modular_headers!
+
+  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
+  target 'RunnerTests' do
+    inherit! :search_paths
+  end
+end
+
+post_install do |installer|
+  installer.pods_project.targets.each do |target|
+    flutter_additional_ios_build_settings(target)
+  end
+end

+ 28 - 0
plugin/gravity_engine/example/ios/Podfile.lock

@@ -0,0 +1,28 @@
+PODS:
+  - Flutter (1.0.0)
+  - gravity_engine (0.0.1):
+    - Flutter
+  - integration_test (0.0.1):
+    - Flutter
+
+DEPENDENCIES:
+  - Flutter (from `Flutter`)
+  - gravity_engine (from `.symlinks/plugins/gravity_engine/ios`)
+  - integration_test (from `.symlinks/plugins/integration_test/ios`)
+
+EXTERNAL SOURCES:
+  Flutter:
+    :path: Flutter
+  gravity_engine:
+    :path: ".symlinks/plugins/gravity_engine/ios"
+  integration_test:
+    :path: ".symlinks/plugins/integration_test/ios"
+
+SPEC CHECKSUMS:
+  Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
+  gravity_engine: 750c5f2424a042f334f1154ece41d916eb148d6a
+  integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573
+
+PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796
+
+COCOAPODS: 1.15.2

+ 117 - 3
plugin/gravity_engine/example/ios/Runner.xcodeproj/project.pbxproj

@@ -7,9 +7,11 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		0BC8C356C25B9CBC5CEFD7E4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ECBE9241471D1406D6AC31AE /* Pods_Runner.framework */; };
 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
 		331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+		6D57FE48250AA319154AEAF0 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E0D03E6F61CBCA152A5F305 /* Pods_RunnerTests.framework */; };
 		74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
 		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
@@ -42,12 +44,15 @@
 /* Begin PBXFileReference section */
 		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
+		1E2616222FD7F6294321FDC7 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; };
 		331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = "<group>"; };
 		331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
 		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
+		3E0D03E6F61CBCA152A5F305 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
 		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; };
+		8AFF4B0432535FF15A21BEDA /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
 		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; };
 		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; };
 		97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -55,6 +60,11 @@
 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		A0154E3A7E49C9E41D7F8DC4 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = "<group>"; };
+		DD0B80060FDA6FB622E7B319 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
+		DD1BFBA590F2180E9943E91B /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
+		ECBE9241471D1406D6AC31AE /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		FEB5917EFF3F4608BC59DCF7 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
@@ -62,6 +72,15 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				0BC8C356C25B9CBC5CEFD7E4 /* Pods_Runner.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F3EDC8D935582441E4CF9324 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				6D57FE48250AA319154AEAF0 /* Pods_RunnerTests.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -76,6 +95,28 @@
 			path = RunnerTests;
 			sourceTree = "<group>";
 		};
+		58AD0C4214D51D9B3C0C1D81 /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				DD0B80060FDA6FB622E7B319 /* Pods-Runner.debug.xcconfig */,
+				DD1BFBA590F2180E9943E91B /* Pods-Runner.release.xcconfig */,
+				8AFF4B0432535FF15A21BEDA /* Pods-Runner.profile.xcconfig */,
+				FEB5917EFF3F4608BC59DCF7 /* Pods-RunnerTests.debug.xcconfig */,
+				1E2616222FD7F6294321FDC7 /* Pods-RunnerTests.release.xcconfig */,
+				A0154E3A7E49C9E41D7F8DC4 /* Pods-RunnerTests.profile.xcconfig */,
+			);
+			path = Pods;
+			sourceTree = "<group>";
+		};
+		8B49A0ACB1B3BEFE28538AAB /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				ECBE9241471D1406D6AC31AE /* Pods_Runner.framework */,
+				3E0D03E6F61CBCA152A5F305 /* Pods_RunnerTests.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
 		9740EEB11CF90186004384FC /* Flutter */ = {
 			isa = PBXGroup;
 			children = (
@@ -94,6 +135,8 @@
 				97C146F01CF9000F007C117D /* Runner */,
 				97C146EF1CF9000F007C117D /* Products */,
 				331C8082294A63A400263BE5 /* RunnerTests */,
+				58AD0C4214D51D9B3C0C1D81 /* Pods */,
+				8B49A0ACB1B3BEFE28538AAB /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -128,8 +171,10 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
 			buildPhases = (
+				09BF96D7EC975B1A722D3232 /* [CP] Check Pods Manifest.lock */,
 				331C807D294A63A400263BE5 /* Sources */,
 				331C807F294A63A400263BE5 /* Resources */,
+				F3EDC8D935582441E4CF9324 /* Frameworks */,
 			);
 			buildRules = (
 			);
@@ -145,12 +190,14 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
 			buildPhases = (
+				C9A456477CD8D1DC1FB9C497 /* [CP] Check Pods Manifest.lock */,
 				9740EEB61CF901F6004384FC /* Run Script */,
 				97C146EA1CF9000F007C117D /* Sources */,
 				97C146EB1CF9000F007C117D /* Frameworks */,
 				97C146EC1CF9000F007C117D /* Resources */,
 				9705A1C41CF9048500538489 /* Embed Frameworks */,
 				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
+				B11A71690515933FB2B69B8C /* [CP] Embed Pods Frameworks */,
 			);
 			buildRules = (
 			);
@@ -222,6 +269,28 @@
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXShellScriptBuildPhase section */
+		09BF96D7EC975B1A722D3232 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
 		3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
 			isa = PBXShellScriptBuildPhase;
 			alwaysOutOfDate = 1;
@@ -253,6 +322,45 @@
 			shellPath = /bin/sh;
 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
 		};
+		B11A71690515933FB2B69B8C /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+		C9A456477CD8D1DC1FB9C497 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
 /* End PBXShellScriptBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
@@ -362,13 +470,14 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				DEVELOPMENT_TEAM = S3Y6HGPL2S;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.atmob.gravityEngineExample;
+				PRODUCT_BUNDLE_IDENTIFIER = com.niannian.manyue;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;
@@ -378,6 +487,7 @@
 		};
 		331C8088294A63A400263BE5 /* Debug */ = {
 			isa = XCBuildConfiguration;
+			baseConfigurationReference = FEB5917EFF3F4608BC59DCF7 /* Pods-RunnerTests.debug.xcconfig */;
 			buildSettings = {
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_STYLE = Automatic;
@@ -395,6 +505,7 @@
 		};
 		331C8089294A63A400263BE5 /* Release */ = {
 			isa = XCBuildConfiguration;
+			baseConfigurationReference = 1E2616222FD7F6294321FDC7 /* Pods-RunnerTests.release.xcconfig */;
 			buildSettings = {
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_STYLE = Automatic;
@@ -410,6 +521,7 @@
 		};
 		331C808A294A63A400263BE5 /* Profile */ = {
 			isa = XCBuildConfiguration;
+			baseConfigurationReference = A0154E3A7E49C9E41D7F8DC4 /* Pods-RunnerTests.profile.xcconfig */;
 			buildSettings = {
 				BUNDLE_LOADER = "$(TEST_HOST)";
 				CODE_SIGN_STYLE = Automatic;
@@ -541,13 +653,14 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				DEVELOPMENT_TEAM = S3Y6HGPL2S;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.atmob.gravityEngineExample;
+				PRODUCT_BUNDLE_IDENTIFIER = com.niannian.manyue;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
@@ -563,13 +676,14 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CLANG_ENABLE_MODULES = YES;
 				CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
+				DEVELOPMENT_TEAM = S3Y6HGPL2S;
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				PRODUCT_BUNDLE_IDENTIFIER = com.atmob.gravityEngineExample;
+				PRODUCT_BUNDLE_IDENTIFIER = com.niannian.manyue;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;

+ 3 - 0
plugin/gravity_engine/example/ios/Runner.xcworkspace/contents.xcworkspacedata

@@ -4,4 +4,7 @@
    <FileRef
       location = "group:Runner.xcodeproj">
    </FileRef>
+   <FileRef
+      location = "group:Pods/Pods.xcodeproj">
+   </FileRef>
 </Workspace>

+ 4 - 4
plugin/gravity_engine/example/ios/Runner/Info.plist

@@ -2,6 +2,8 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
+	<key>CADisableMinimumFrameDurationOnPhone</key>
+	<true/>
 	<key>CFBundleDevelopmentRegion</key>
 	<string>$(DEVELOPMENT_LANGUAGE)</string>
 	<key>CFBundleDisplayName</key>
@@ -24,6 +26,8 @@
 	<string>$(FLUTTER_BUILD_NUMBER)</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
+	<key>UIApplicationSupportsIndirectInputEvents</key>
+	<true/>
 	<key>UILaunchStoryboardName</key>
 	<string>LaunchScreen</string>
 	<key>UIMainStoryboardFile</key>
@@ -41,9 +45,5 @@
 		<string>UIInterfaceOrientationLandscapeLeft</string>
 		<string>UIInterfaceOrientationLandscapeRight</string>
 	</array>
-	<key>CADisableMinimumFrameDurationOnPhone</key>
-	<true/>
-	<key>UIApplicationSupportsIndirectInputEvents</key>
-	<true/>
 </dict>
 </plist>

+ 2 - 2
plugin/gravity_engine/example/pubspec.lock

@@ -266,10 +266,10 @@ packages:
     dependency: transitive
     description:
       name: vm_service
-      sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
+      sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
       url: "https://pub.dev"
     source: hosted
-    version: "14.2.4"
+    version: "14.2.5"
   webdriver:
     dependency: transitive
     description:

+ 154 - 13
plugin/gravity_engine/ios/Classes/GravityEnginePlugin.swift

@@ -1,19 +1,160 @@
+
 import Flutter
 import UIKit
+import GravityEngineSDK
 
 public class GravityEnginePlugin: NSObject, FlutterPlugin {
-  public static func register(with registrar: FlutterPluginRegistrar) {
-    let channel = FlutterMethodChannel(name: "gravity_engine", binaryMessenger: registrar.messenger())
-    let instance = GravityEnginePlugin()
-    registrar.addMethodCallDelegate(instance, channel: channel)
-  }
-
-  public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
-    switch call.method {
-    case "getPlatformVersion":
-      result("iOS " + UIDevice.current.systemVersion)
-    default:
-      result(FlutterMethodNotImplemented)
+
+    // Method names
+    private static let METHOD_INITIALIZE = "initialize"
+    private static let METHOD_TRACK = "track"
+    private static let METHOD_TRACK_PAY = "trackPay"
+
+    // Arguments
+    private static let ARG_ACCESS_TOKEN = "accessToken"
+    private static let ARG_DEBUG = "debug"
+    private static let ARG_CLIENT_ID = "clientId"
+    private static let ARG_CHANNEL = "channel"
+
+    //ios>>>
+    private static let ARG_APPID = "appid"
+    private static let ARG_IDFA = "idfa"
+    private static let ARG_IDFV = "idfv"
+    //<<<ios
+
+    private static let ARG_EVENT_ID = "eventId"
+    private static let ARG_EVENT_PARAMS = "eventParams"
+
+    private static let ARG_ORDER_NO = "orderNo"
+    private static let ARG_AMOUNT = "amount"
+    private static let ARG_CURRENCY = "currency"
+    private static let ARG_PAY_TYPE = "payType"
+    private static let ARG_ITEM_NAME = "itemName"
+
+    private var gravityEngineSDK: GravityEngineSDK?
+    private var isInitialized = false
+
+    public static func register(with registrar: FlutterPluginRegistrar) {
+        let channel = FlutterMethodChannel(name: "gravity_engine", binaryMessenger: registrar.messenger())
+        let instance = GravityEnginePlugin()
+        registrar.addMethodCallDelegate(instance, channel: channel)
+    }
+
+    public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) {
+        switch call.method {
+        case GravityEnginePlugin.METHOD_INITIALIZE:
+            initialize(call: call, result: result)
+            print("GravityEnginePlugin.METHOD_INITIALIZE = \(call.method)");
+        case GravityEnginePlugin.METHOD_TRACK:
+            track(call: call, result: result)
+            print("GravityEnginePlugin.METHOD_TRACK = \(call.method)");
+        case GravityEnginePlugin.METHOD_TRACK_PAY:
+            trackPay(call: call, result: result)
+        default:
+            result(FlutterMethodNotImplemented)
+        }
     }
-  }
+
+    //init
+    private func initialize(call: FlutterMethodCall, result: @escaping FlutterResult) {
+        guard let args = call.arguments as? [String: Any],
+              let accessToken = args[GravityEnginePlugin.ARG_ACCESS_TOKEN] as? String,
+              let appid = args[GravityEnginePlugin.ARG_APPID] as? String,
+              let idfa = args[GravityEnginePlugin.ARG_IDFA] as? String,
+              let idfv = args[GravityEnginePlugin.ARG_IDFV] as? String,
+              let debug = args[GravityEnginePlugin.ARG_DEBUG] as? Bool,
+              let clientId = args[GravityEnginePlugin.ARG_CLIENT_ID] as? String,
+              let channel = args[GravityEnginePlugin.ARG_CHANNEL] as? String else {
+            result(FlutterError(code: "-1", message: "Missing required arguments", details: nil))
+            return
+        }
+
+        //配置引力引擎
+        let config = GEConfig();
+        config.appid = appid;
+        config.accessToken = accessToken;
+        if debug{
+            config.debugMode = GravityEngineDebugMode.on;
+        }else{
+            config.debugMode = [];
+        }
+        GravityEngineSDK.start(with: config);
+        let instance = GravityEngineSDK.sharedInstance(withAppid: config.appid);
+
+        //全局引力引擎实例
+        gravityEngineSDK = instance
+
+        // 开启自动采集
+        gravityEngineSDK?.enableAutoTrack(GravityEngineAutoTrackEventType.eventTypeAll);
+
+        //获取当前版本号
+        var appVersionName = 1
+        if let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String {
+            appVersionName = Int(appVersion) ?? 1
+        }
+        //自动归因
+        let enableAsa = true
+        //其他参数
+        let userCaid1MD5 = ""
+        let userCaid2MD5 = ""
+        let enableSyncAttribution = true
+
+        //初始化sdk
+        gravityEngineSDK?.initializeGravityEngine(withClientId: idfv, withUserName: idfv, withVersion: Int32(appVersionName), withAsaEnable:enableAsa, withIdfa:idfa, withIdfv:idfv, withCaid1:userCaid1MD5, withCaid2:userCaid2MD5, withSyncAttribution:enableSyncAttribution, withSuccessCallback: { response in
+            print("gravity engine initialize success, response is ", response);
+            self.isInitialized = true
+            result(response)
+        }, withErrorCallback: { error in
+            print("gravity engine initialize failed, and error is", error);
+            result(FlutterError(code: "-1", message: "Initialization failed", details: error.localizedDescription))
+        });
+
+        // 获取用户信息
+        //        instance?.queryUserInfo(successCallback: { response in
+        ////            print("user info \(response)")
+        //        }, withErrorCallback: { error in
+        ////            print("get user info error \(error)")
+        //        })
+
+        //设置公共属性
+        var superProperties: [String : Any] = ["channel":channel]
+        gravityEngineSDK?.setSuperProperties(superProperties)
+
+    }
+
+    //event
+    private func track(call: FlutterMethodCall, result: @escaping FlutterResult) {
+        guard let args = call.arguments as? [String: Any],
+              let eventId = args[GravityEnginePlugin.ARG_EVENT_ID] as? String else {
+            result(FlutterError(code: "-1", message: "Missing eventId", details: nil))
+            return
+        }
+        guard isInitialized, let sdk = gravityEngineSDK else {
+            result(FlutterError(code: "-1", message: "SDK not initialized", details: nil))
+            return
+        }
+        let eventParams = args[GravityEnginePlugin.ARG_EVENT_PARAMS] as? [String: Any]
+        sdk.track(eventId, properties: eventParams)
+        result(nil)
+    }
+
+    //pay
+    private func trackPay(call: FlutterMethodCall, result: @escaping FlutterResult) {
+        guard let args = call.arguments as? [String: Any],
+              let orderNo = args[GravityEnginePlugin.ARG_ORDER_NO] as? String,
+              let amount = args[GravityEnginePlugin.ARG_AMOUNT] as? Int,
+              let currency = args[GravityEnginePlugin.ARG_CURRENCY] as? String,
+              let itemName = args[GravityEnginePlugin.ARG_ITEM_NAME] as? String,
+              let payType = args[GravityEnginePlugin.ARG_PAY_TYPE] as? String else {
+            result(FlutterError(code: "-1", message: "Missing required arguments", details: nil))
+            return
+        }
+        guard isInitialized, let sdk = gravityEngineSDK else {
+            result(FlutterError(code: "-1", message: "SDK not initialized", details: nil))
+            return
+        }
+        sdk.trackPayEvent(withAmount: Int32(amount), withPayType: payType, withOrderId: orderNo, withPayReason: itemName, withPayMethod: currency)
+        result(nil)
+    }
+
 }

BIN
plugin/gravity_engine/ios/GravityEngineSDK.framework/GravityEngineSDK


+ 79 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEAutoTrackProtocol.h

@@ -0,0 +1,79 @@
+//
+//  GEAutoTrackProtocol.h
+//  GravityEngineSDK
+//
+//
+
+#ifndef GEAutoTrackProtocol_h
+#define GEAutoTrackProtocol_h
+
+#import <UIKit/UIKit.h>
+
+@protocol TDUIViewAutoTrackDelegate
+
+@optional
+
+/**
+ UITableView event properties
+
+ @return event properties
+ */
+- (NSDictionary *)gravityEngine_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
+
+/**
+ APPID UITableView event properties
+ 
+ @return event properties
+ */
+- (NSDictionary *)gravityEngineWithAppid_tableView:(UITableView *)tableView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
+
+@optional
+
+/**
+ UICollectionView event properties
+
+ @return event properties
+ */
+- (NSDictionary *)gravityEngine_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
+
+/**
+ APPID UICollectionView event properties
+
+ @return event properties
+ */
+- (NSDictionary *)gravityEngineWithAppid_collectionView:(UICollectionView *)collectionView autoTrackPropertiesAtIndexPath:(NSIndexPath *)indexPath;
+
+@end
+
+
+@protocol GEAutoTracker
+
+@optional
+
+- (NSDictionary *)getTrackProperties;
+
+
+- (NSDictionary *)getTrackPropertiesWithAppid;
+
+@end
+
+/**
+ Automatically track the page
+ */
+@protocol GEScreenAutoTracker <GEAutoTracker>
+
+@optional
+
+/**
+ Attributes for custom page view events
+ */
+- (NSString *)getScreenUrl;
+
+/**
+ Configure the properties of the APPID custom page view event
+ */
+- (NSDictionary *)getScreenUrlWithAppid;
+
+@end
+
+#endif /* GEAutoTrackProtocol_h */

+ 22 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEAutoTrackPublicHeader.h

@@ -0,0 +1,22 @@
+//
+//  GEAutoTrackPublicHeader.h
+//  GravityEngineSDK
+//
+//
+
+#ifndef GEAutoTrackPublicHeader_h
+#define GEAutoTrackPublicHeader_h
+
+#if __has_include(<GravityEngineSDK/GEAutoTrackProtocol.h>)
+#import <GravityEngineSDK/GEAutoTrackProtocol.h>
+#else
+#import "GEAutoTrackProtocol.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/UIView+GravityEngine.h>)
+#import <GravityEngineSDK/UIView+GravityEngine.h>
+#else
+#import "UIView+GravityEngine.h"
+#endif
+
+#endif /* GEAutoTrackPublicHeader_h */

+ 123 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEConfig.h

@@ -0,0 +1,123 @@
+#import <Foundation/Foundation.h>
+
+#if __has_include(<GravityEngineSDK/GEConstant.h>)
+#import <GravityEngineSDK/GEConstant.h>
+#else
+#import "GEConstant.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GESecurityPolicy.h>)
+#import <GravityEngineSDK/GESecurityPolicy.h>
+#else
+#import "GESecurityPolicy.h"
+#endif
+
+#if TARGET_OS_IOS
+#if __has_include(<GravityEngineSDK/GESecretKey.h>)
+#import <GravityEngineSDK/GESecretKey.h>
+#else
+#import "GESecretKey.h"
+#endif
+#endif
+
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+
+@interface GEConfig:NSObject <NSCopying>
+/**
+ Set automatic burying type
+ */
+@property (assign, nonatomic) GravityEngineAutoTrackEventType autoTrackEventType;
+/**
+ Network environment for data transmission
+ */
+@property (assign, nonatomic) GravityNetworkType networkTypePolicy;
+/**
+ Data upload interval
+ */
+@property (nonatomic, strong) NSNumber *uploadInterval;
+/**
+ When there is data to upload, when the number of data cache reaches the uploadsize, upload the data immediately
+ */
+@property (nonatomic, strong) NSNumber *uploadSize;
+/**
+ Event blacklist, event names that are not counted are added here
+ */
+@property (strong, nonatomic) NSArray *disableEvents;
+/**
+ The maximum number of cached events, the default is 10000, the minimum is 5000
+ */
+@property (class,  nonatomic) NSInteger maxNumEvents DEPRECATED_MSG_ATTRIBUTE("Please config TAConfigInfo in main info.plist");
+/**
+ Data cache expiration time, the default is 10 days, the longest is 10 days
+ */
+@property (class,  nonatomic) NSInteger expirationDays DEPRECATED_MSG_ATTRIBUTE("Please config TAConfigInfo in main info.plist");
+/**
+ appid
+ */
+@property (atomic, copy) NSString *appid;
+/**
+ instance Token
+ */
+@property (atomic, copy) NSString *(^getInstanceName)(void);
+/**
+ Server URL
+ */
+@property (atomic, copy) NSString *configureURL;
+/**
+ Gravity AccessToken
+ */
+@property (nonatomic, copy) NSString *accessToken;
+
+/**
+ Initialize and configure background self-starting events
+ YES: Collect background self-starting events
+ NO: Do not collect background self-starting events
+ */
+@property (nonatomic, assign) BOOL trackRelaunchedInBackgroundEvents;
+/**
+ Debug Mode
+*/
+@property (nonatomic, assign) GravityEngineDebugMode debugMode;
+
+/**
+app launchOptions
+*/
+@property (nonatomic, copy) NSDictionary *launchOptions;
+
+/**
+ Initialize and configure the certificate verification policy
+*/
+@property (nonatomic, strong) GESecurityPolicy *securityPolicy;
+
+/**
+ Set default time zone
+  You can use this time zone to compare the offset of the current time zone and the default time zone
+*/
+@property (nonatomic, strong) NSTimeZone *defaultTimeZone;
+
+/**
+ instance name
+*/
+@property (nonatomic, copy) NSString *name;
+
++ (GEConfig *)defaultGEConfig;
+- (void)setNetworkType:(GravityEngineNetworkType)type;
+
+
+/// enable encryption
+@property (nonatomic, assign) BOOL enableEncrypt;
+
+#if TARGET_OS_IOS
+/// Get local key configuration
+@property (nonatomic, strong) GESecretKey *secretKey;
+#endif
+
+/// instance token
+- (NSString *)getMapInstanceToken;
+
+@end
+NS_ASSUME_NONNULL_END

+ 201 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEConstant.h

@@ -0,0 +1,201 @@
+//
+//  GEConstant.h
+//  GravityEngineSDK
+//
+//  Copyright © 2020 gravityengine. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+/**
+Debug Mode
+
+- GravityEngineDebugOff : Not enabled by default
+*/
+typedef NS_OPTIONS(NSInteger, GravityEngineDebugMode) {
+    /**
+     Not enabled by default
+     */
+    GravityEngineDebugOff      = 0,
+    
+    
+    /**
+     Enable Debug Mode,Data will persist
+     */
+    GravityEngineDebugOn         = 1 << 1,
+    
+};
+
+
+/**
+ Log Level
+
+ - GELoggingLevelNone : Not enabled by default
+ */
+typedef NS_OPTIONS(NSInteger, GELoggingLevel) {
+    /**
+     Not enabled by default
+     */
+    GELoggingLevelNone  = 0,
+    
+    /**
+     Error Log
+     */
+    GELoggingLevelError = 1 << 0,
+    
+    /**
+     Info  Log
+     */
+    GELoggingLevelInfo  = 1 << 1,
+    
+    /**
+     Debug Log
+     */
+    GELoggingLevelDebug = 1 << 2,
+};
+
+/**
+ Https Certificate Verification Mode
+*/
+typedef NS_OPTIONS(NSInteger, GESSLPinningMode) {
+    /**
+     The default authentication method will only verify the certificate returned by the server in the system's trusted certificate list
+    */
+    GESSLPinningModeNone          = 0,
+    
+    /**
+     The public key of the verification certificate
+    */
+    GESSLPinningModePublicKey     = 1 << 0,
+    
+    /**
+     Verify all contents of the certificate
+    */
+    GESSLPinningModeCertificate   = 1 << 1
+};
+
+/**
+ Custom HTTPS Authentication
+*/
+typedef NSURLSessionAuthChallengeDisposition (^TDURLSessionDidReceiveAuthenticationChallengeBlock)(NSURLSession *_Nullable session, NSURLAuthenticationChallenge *_Nullable challenge, NSURLCredential *_Nullable __autoreleasing *_Nullable credential);
+
+
+
+/**
+ Network Type Enum
+
+ - GENetworkTypeDefault :  3G、4G、WIFI
+ */
+typedef NS_OPTIONS(NSInteger, GravityEngineNetworkType) {
+    
+    /**
+     3G、4G、WIFI
+     */
+    GENetworkTypeDefault  = 0,
+    
+    /**
+     only WIFI
+     */
+    GENetworkTypeOnlyWIFI = 1 << 0,
+    
+    /**
+     2G、3G、4G、WIFI
+     */
+    GENetworkTypeALL      = 1 << 1,
+};
+
+/**
+ Auto-Tracking Enum
+
+ - GravityEngineEventTypeNone           : auto-tracking is not enabled by default
+ */
+typedef NS_OPTIONS(NSInteger, GravityEngineAutoTrackEventType) {
+    
+    /**
+     auto-tracking is not enabled by default
+     */
+    GravityEngineEventTypeNone          = 0,
+    
+    /*
+     Active Events
+     */
+    GravityEngineEventTypeAppStart      = 1 << 0,
+    
+    /**
+     Inactive Events
+     */
+    GravityEngineEventTypeAppEnd        = 1 << 1,
+    
+    /**
+     Clicked events
+     */
+    GravityEngineEventTypeAppClick      = 1 << 2,
+    
+    /**
+     View Page Events
+     */
+    GravityEngineEventTypeAppViewScreen = 1 << 3,
+    
+    /**
+     Crash Events
+     */
+    GravityEngineEventTypeAppViewCrash  = 1 << 4,
+    
+    /**
+     Installation Events
+     */
+    GravityEngineEventTypeAppInstall    = 1 << 5,
+    /**
+     All  Events
+     */
+    GravityEngineEventTypeAll    = GravityEngineEventTypeAppStart | GravityEngineEventTypeAppEnd | GravityEngineEventTypeAppClick | GravityEngineEventTypeAppInstall | GravityEngineEventTypeAppViewScreen
+
+};
+
+typedef NS_OPTIONS(NSInteger, GravityNetworkType) {
+    GravityNetworkTypeNONE     = 0,
+    GravityNetworkType2G       = 1 << 0,
+    GravityNetworkType3G       = 1 << 1,
+    GravityNetworkType4G       = 1 << 2,
+    GravityNetworkTypeWIFI     = 1 << 3,
+    GravityNetworkType5G       = 1 << 4,
+    GravityNetworkTypeALL      = 0xFF,
+};
+
+
+typedef NS_OPTIONS(NSInteger, GEThirdPartyShareType) {
+    GEThirdPartyShareTypeNONE               = 0,
+    GEThirdPartyShareTypeAPPSFLYER          = 1 << 0,
+    GEThirdPartyShareTypeIRONSOURCE         = 1 << 1,
+    GEThirdPartyShareTypeADJUST             = 1 << 2,
+    GEThirdPartyShareTypeBRANCH             = 1 << 3,
+    GEThirdPartyShareTypeTOPON              = 1 << 4,
+    GEThirdPartyShareTypeTRACKING           = 1 << 5,
+    GEThirdPartyShareTypeTRADPLUS           = 1 << 6,
+    GEThirdPartyShareTypeAPPLOVIN           = 1 << 7,
+    GEThirdPartyShareTypeKOCHAVA            = 1 << 8,
+    GEThirdPartyShareTypeTALKINGDATA        = 1 << 9,
+    GEThirdPartyShareTypeFIREBASE           = 1 << 10,
+    
+    
+    TDThirdPartyShareTypeNONE               = GEThirdPartyShareTypeNONE,
+    TDThirdPartyShareTypeAPPSFLYER          = GEThirdPartyShareTypeAPPSFLYER,
+    TDThirdPartyShareTypeIRONSOURCE         = GEThirdPartyShareTypeIRONSOURCE,
+    TDThirdPartyShareTypeADJUST             = GEThirdPartyShareTypeADJUST,
+    TDThirdPartyShareTypeBRANCH             = GEThirdPartyShareTypeBRANCH,
+    TDThirdPartyShareTypeTOPON              = GEThirdPartyShareTypeTOPON,
+    TDThirdPartyShareTypeTRACKING           = GEThirdPartyShareTypeTRACKING,
+    TDThirdPartyShareTypeTRADPLUS           = GEThirdPartyShareTypeTRADPLUS,
+    
+};
+
+//MARK: - Data reporting status
+typedef NS_ENUM(NSInteger, GETrackStatus) {
+    /// Suspend reporting
+    GETrackStatusPause,
+    /// Stop reporting and clear cache
+    GETrackStatusStop,
+    /// Suspend reporting and continue to persist data
+    GETrackStatusSaveOnly,
+    /// reset normal
+    GETrackStatusNormal
+};

+ 38 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEDeviceInfo.h

@@ -0,0 +1,38 @@
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+FOUNDATION_EXTERN NSString *const VERSION;
+
+@interface GEDeviceInfo : NSObject
+
++ (GEDeviceInfo *)sharedManager;
+
+
+@property (nonatomic, copy) NSString *uniqueId;
+@property (nonatomic, copy) NSString *deviceId;
+@property (nonatomic, copy) NSString *appVersion;
+@property (nonatomic, readonly) BOOL isFirstOpen;
+@property (nonatomic, copy) NSString *libName;
+@property (nonatomic, copy) NSString *libVersion;
+
++ (NSString *)libVersion;
++ (NSString*)bundleId;
+
+- (void)ge_updateData;
+- (NSDictionary *)ge_collectProperties;
+
++ (NSDate *)ge_getInstallTime;
+
+- (NSDictionary *)getAutomaticData;
+
++ (NSString *)currentRadio;
+
++ (NSTimeInterval)uptime;
++ (NSString *)bootTimeSec;
++ (NSDate *)systemUpdateTime;
+
+- (NSString*)ge_iphoneType;
+@end
+
+NS_ASSUME_NONNULL_END

+ 12 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEEditableEventModel.h

@@ -0,0 +1,12 @@
+
+#if __has_include(<GravityEngineSDK/GEUpdateEventModel.h>)
+#import <GravityEngineSDK/GEUpdateEventModel.h>
+#else
+#import "GEUpdateEventModel.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEOverwriteEventModel.h>)
+#import <GravityEngineSDK/GEOverwriteEventModel.h>
+#else
+#import "GEOverwriteEventModel.h"
+#endif

+ 31 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEEventModel.h

@@ -0,0 +1,31 @@
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+typedef NS_OPTIONS(NSInteger, TimeValueType) {
+    GETimeValueTypeNone      = 0,
+    GETimeValueTypeTimeOnly  = 1 << 0,
+    GETimeValueTypeAll       = 1 << 1,
+};
+
+typedef NSString *kEDEventTypeName;
+
+FOUNDATION_EXTERN kEDEventTypeName const GE_EVENT_TYPE_TRACK_FIRST;
+FOUNDATION_EXTERN kEDEventTypeName const GE_EVENT_TYPE_TRACK_UPDATE;
+FOUNDATION_EXTERN kEDEventTypeName const GE_EVENT_TYPE_TRACK_OVERWRITE;
+
+@interface GEEventModel : NSObject
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@property (nonatomic, copy, readonly) NSString *eventName;
+@property (nonatomic, copy, readonly) kEDEventTypeName eventType; // Default is GE_EVENT_TYPE_TRACK
+
+@property (nonatomic, strong) NSDictionary *properties;
+
+- (void)configTime:(NSDate *)time timeZone:(NSTimeZone * _Nullable)timeZone;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 19 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEFirstEventModel.h

@@ -0,0 +1,19 @@
+
+#if __has_include(<GravityEngineSDK/GEEventModel.h>)
+#import <GravityEngineSDK/GEEventModel.h>
+#else
+#import "GEEventModel.h"
+#endif
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface GEFirstEventModel : GEEventModel
+
+- (instancetype)initWithEventName:(NSString * _Nullable)eventName;
+
+- (instancetype)initWithEventName:(NSString * _Nullable)eventName firstCheckID:(NSString *)firstCheckID;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 21 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEOverwriteEventModel.h

@@ -0,0 +1,21 @@
+//
+//  GEOverwriteEventModel.h
+//  GravityEngineSDK
+//
+//
+
+#if __has_include(<GravityEngineSDK/GEEventModel.h>)
+#import <GravityEngineSDK/GEEventModel.h>
+#else
+#import "GEEventModel.h"
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface GEOverwriteEventModel : GEEventModel
+
+- (instancetype)initWithEventName:(NSString *)eventName eventID:(NSString *)eventID;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 35 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEPresetProperties.h

@@ -0,0 +1,35 @@
+//
+//  GEPresetProperties.h
+//  GravityEngineSDK
+//
+//  Copyright © 2021 gravityengine. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface GEPresetProperties : NSObject
+
+@property (nonatomic, copy, readonly) NSString *bundle_id;
+@property (nonatomic, copy, readonly) NSString *carrier;
+@property (nonatomic, copy, readonly) NSString *device_id;
+@property (nonatomic, copy, readonly) NSString *device_model;
+@property (nonatomic, copy, readonly) NSString *manufacturer;
+@property (nonatomic, copy, readonly) NSString *network_type;
+@property (nonatomic, copy, readonly) NSString *os;
+@property (nonatomic, copy, readonly) NSString *os_version;
+@property (nonatomic, copy, readonly) NSNumber *screen_height;
+@property (nonatomic, copy, readonly) NSNumber *screen_width;
+@property (nonatomic, copy, readonly) NSString *system_language;
+@property (nonatomic, copy, readonly) NSNumber *zone_offset;
+@property (nonatomic, copy, readonly) NSString *install_time;
+
+/**
+ * The key of the returned event preset property starts with "#", and it is not recommended to use it directly as the property of the event
+ */
+- (NSDictionary *)toEventPresetProperties;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 36 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GESecretKey.h

@@ -0,0 +1,36 @@
+//
+//  GESecretKey.h
+//  GravityEngineSDK
+//
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface GESecretKey : NSObject<NSCopying>
+
+/// Initialize key information
+- (instancetype)initWithVersion:(NSUInteger)version publicKey:(NSString *)publicKey;
+
+/// Initialize key information
+/// @param version key version number
+/// @param publicKey public key
+/// @param asymmetricEncryption asymmetric encryption type
+/// @param symmetricEncryption Symmetric encryption type
+- (instancetype)initWithVersion:(NSUInteger)version
+                      publicKey:(NSString *)publicKey
+           asymmetricEncryption:(NSString *)asymmetricEncryption
+            symmetricEncryption:(NSString *)symmetricEncryption;
+
+@property (nonatomic, assign, readonly) NSUInteger version;
+@property (nonatomic, copy, readonly) NSString *publicKey;
+@property (nonatomic, copy, readonly) NSString *symmetricEncryption;
+@property (nonatomic, copy, readonly) NSString *asymmetricEncryption;
+
+/// Whether the key information is available
+@property (nonatomic, assign, readonly) BOOL isValid;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 50 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GESecurityPolicy.h

@@ -0,0 +1,50 @@
+
+/**
+ Thinks AFNetworking: https://github.com/AFNetworking/AFNetworking
+ */
+#import <Foundation/Foundation.h>
+
+#if __has_include(<GravityEngineSDK/GEConstant.h>)
+#import <GravityEngineSDK/GEConstant.h>
+#else
+#import "GEConstant.h"
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+@interface GESecurityPolicy: NSObject<NSCopying>
+
+@property (nonatomic, assign) BOOL allowInvalidCertificates;
+@property (nonatomic, assign) BOOL validatesDomainName;
+@property (nonatomic, copy) TDURLSessionDidReceiveAuthenticationChallengeBlock sessionDidReceiveAuthenticationChallenge;
++ (instancetype)policyWithPinningMode:(GESSLPinningMode)pinningMode;
++ (instancetype)defaultPolicy;
+- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust forDomain:(NSString *)domain;
+
+@end
+
+#ifndef __Require_Quiet
+    #define __Require_Quiet(assertion, exceptionLabel)                            \
+      do                                                                          \
+      {                                                                           \
+          if ( __builtin_expect(!(assertion), 0) )                                \
+          {                                                                       \
+              goto exceptionLabel;                                                \
+          }                                                                       \
+      } while ( 0 )
+#endif
+
+#ifndef __Require_noErr_Quiet
+    #define __Require_noErr_Quiet(errorCode, exceptionLabel)                      \
+      do                                                                          \
+      {                                                                           \
+          if ( __builtin_expect(0 != (errorCode), 0) )                            \
+          {                                                                       \
+              goto exceptionLabel;                                                \
+          }                                                                       \
+      } while ( 0 )
+#endif
+
+
+NS_ASSUME_NONNULL_END

+ 21 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GEUpdateEventModel.h

@@ -0,0 +1,21 @@
+//
+//  GEUpdateEventModel.h
+//  GravityEngineSDK
+//
+//
+
+#if __has_include(<GravityEngineSDK/GEEventModel.h>)
+#import <GravityEngineSDK/GEEventModel.h>
+#else
+#import "GEEventModel.h"
+#endif
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface GEUpdateEventModel : GEEventModel
+
+- (instancetype)initWithEventName:(NSString *)eventName eventID:(NSString *)eventID;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 626 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GravityEngineSDK.h

@@ -0,0 +1,626 @@
+#import <Foundation/Foundation.h>
+
+#if TARGET_OS_IOS
+#import <UIKit/UIKit.h>
+
+#if __has_include(<GravityEngineSDK/GEAutoTrackPublicHeader.h>)
+#import <GravityEngineSDK/GEAutoTrackPublicHeader.h>
+#else
+#import "GEAutoTrackPublicHeader.h"
+#endif
+
+#elif TARGET_OS_OSX
+#import <AppKit/AppKit.h>
+#endif
+
+#if __has_include(<GravityEngineSDK/GEFirstEventModel.h>)
+#import <GravityEngineSDK/GEFirstEventModel.h>
+#else
+#import "GEFirstEventModel.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEEditableEventModel.h>)
+#import <GravityEngineSDK/GEEditableEventModel.h>
+#else
+#import "GEEditableEventModel.h"
+#endif
+
+
+#if __has_include(<GravityEngineSDK/GEConfig.h>)
+#import <GravityEngineSDK/GEConfig.h>
+#else
+#import "GEConfig.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEPresetProperties.h>)
+#import <GravityEngineSDK/GEPresetProperties.h>
+#else
+#import "GEPresetProperties.h"
+#endif
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ GravityEngine API
+ 
+ ## Initialization
+ 
+ ```objective-c
+ GravityEngineSDK *instance = [GravityEngineSDK startWithAppId:@"YOUR_APPID" withUrl:@"YOUR_SERVER_URL"];
+ ```
+ 
+ ## Track Event
+ 
+ ```objective-c
+ instance.track("some_event");
+ ```
+or
+ ```objective-c
+ [[GravityEngineSDK sharedInstanceWithAppid:@"YOUR_APPID"] track:@"some_event"];
+ ```
+ If you only have one instance in your project, you can also use
+ ```objective-c
+ [[GravityEngineSDK sharedInstance] track:@"some_event"];
+ ```
+
+ */
+
+typedef void (^CallbackWithSuccess)(NSDictionary *response);
+
+typedef void (^CallbackWithError)(NSError * error);
+
+@interface GravityEngineSDK : NSObject
+
+#pragma mark - Tracking
+
+/**
+ Get default instance
+
+ @return SDK instance
+ */
++ (nullable GravityEngineSDK *)sharedInstance;
+
+/**
+  Get one instance according to appid or instanceName
+
+  @param appid APP ID or instanceName
+  @return SDK instance
+  */
++ (nullable GravityEngineSDK *)sharedInstanceWithAppid:(NSString *)appid;
+
+/**
+  Initialization method
+  After the SDK initialization is complete, the saved instance can be obtained through this api
+
+  @param config initialization configuration
+  @return one instance
+  */
++ (GravityEngineSDK *)startWithConfig:(nullable GEConfig *)config;
+
+/**
+  Initialization method
+  After the SDK initialization is complete, the saved instance can be obtained through this api
+
+  @param appId appId
+  @param url server url
+  @param config initialization configuration object
+  @return one instance
+  */
++ (GravityEngineSDK *)startWithAppId:(NSString *)appId withUrl:(NSString *)url withConfig:(nullable GEConfig *)config;
+
+
+#pragma mark - Other API
+/**
+ register GravityEngine
+ */
+- (void)initializeGravityEngineWithClientId:(NSString *) clientId withUserName:(NSString *)userName withVersion:(int)version withAsaEnable:(bool)enableAsa withIdfa:(NSString *) idfa withIdfv:(NSString *)idfv withCaid1:(NSString *)caid1_md5 withCaid2:(NSString *)caid2_md5 withSyncAttribution:(bool)syncAttribution withSuccessCallback:(CallbackWithSuccess)successCallback withErrorCallback:(CallbackWithError)errorCallback;
+
+- (void)initializeGravityEngineWithClientId:(NSString *) clientId withUserName:(NSString *)userName withVersion:(int)version withAsaEnable:(bool)enableAsa withIdfa:(NSString *) idfa withIdfv:(NSString *)idfv withCaid1:(NSString *)caid1_md5 withCaid2:(NSString *)caid2_md5 withSyncAttribution:(bool)syncAttribution withCreateTime:(long)createTimestamp withCompany:(NSString *)company withSuccessCallback:(CallbackWithSuccess)successCallback withErrorCallback:(CallbackWithError)errorCallback;
+
+- (void)queryUserInfoWithSuccessCallback:(void(^)(NSDictionary* _Nonnull data))successCallback withErrorCallback:(CallbackWithError)errorCallback;
+
+- (void)resetClientID:(NSString *) newClientID withSuccessCallback:(CallbackWithSuccess)successCallback withErrorCallback:(CallbackWithError)errorCallback;
+
+- (void)uploadDeviceInfoWithIdfa:(NSString *) idfa withIdfv:(NSString *)idfv withCaid1:(NSString *)caid1_md5 withCaid2:(NSString *)caid2_md5;
+
+/**
+ * 上报业务注册事件
+ *
+ */
+- (void)trackRegisterEvent;
+
+/**
+ * 上报付费事件
+ *
+ * @param payAmount  付费金额 单位为分
+ * @param payType    货币类型 按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等
+ * @param orderId    订单号
+ * @param payReason  付费原因 例如:购买钻石、办理月卡
+ * @param payMethod  付费方式 例如:支付宝、微信、银联等
+ */
+- (void)trackPayEventWithAmount:(int)payAmount withPayType:(NSString *)payType withOrderId:(NSString *)orderId withPayReason:(NSString *)payReason withPayMethod:(NSString *)payMethod;
+
+/**
+ * 上报提现事件
+ *
+ * @param payAmount  提现金额 单位为分
+ * @param payType    货币类型 按照国际标准组织ISO 4217中规范的3位字母,例如CNY人民币、USD美金等
+ * @param orderId    订单号
+ * @param payReason  提现原因 例如:用户首次提现、用户抽奖提现
+ * @param payMethod  提现支付方式 例如:支付宝、微信、银联等
+ */
+- (void)trackWithdrawEvent:(int)payAmount withPayType:(NSString *)payType withOrderId:(NSString *)orderId withPayReason:(NSString *)payReason withPayMethod:(NSString *)payMethod;
+
+/**
+ * 上报广告事件
+ *
+ * @param adUnionType   广告聚合平台类型  (取值为:topon、gromore、admore、self,分别对应Topon、Gromore、Admore、自建聚合)
+ * @param adPlacementId 广告瀑布流ID
+ * @param adSourceId    广告源ID
+ * @param adType        广告类型 (取值为:reward、banner、 native 、interstitial、 splash ,分别对应激励视频广告、横幅广告、信息流广告、插屏广告、开屏广告)
+ * @param adAdnType       广告平台类型(取值为:csj、gdt、ks、 mint 、baidu,分别对应为穿山甲、优量汇、快手联盟、Mintegral、百度联盟)
+ * @param ecpm          预估ECPM价格(单位为元)
+ * @param duration      广告播放时长(单位为秒)
+ * @param isPlayOver    广告是否播放完毕
+ */
+- (void)trackAdLoadEventWithUninType:(NSString *)adUnionType withPlacementId:(NSString *)adPlacementId withSourceId:(NSString *)adSourceId withAdType:(NSString *)adType withAdnType:(NSString *)adAdnType;
+
+- (void)trackAdShowEventWithUninType:(NSString *)adUnionType withPlacementId:(NSString *)adPlacementId withSourceId:(NSString *)adSourceId withAdType:(NSString *)adType withAdnType:(NSString *)adAdnType withEcpm:(NSNumber *)ecpm;
+
+- (void)trackAdSkipEventWithUninType:(NSString *)adUnionType withPlacementId:(NSString *)adPlacementId withSourceId:(NSString *)adSourceId withAdType:(NSString *)adType withAdnType:(NSString *)adAdnType withEcpm:(NSNumber *)ecpm;
+
+- (void)trackAdClickEventWithUninType:(NSString *)adUnionType withPlacementId:(NSString *)adPlacementId withSourceId:(NSString *)adSourceId withAdType:(NSString *)adType withAdnType:(NSString *)adAdnType withEcpm:(NSNumber *)ecpm;
+
+- (void)trackAdPlayStartEventWithUninType:(NSString *)adUnionType withPlacementId:(NSString *)adPlacementId withSourceId:(NSString *)adSourceId withAdType:(NSString *)adType withAdnType:(NSString *)adAdnType withEcpm:(NSNumber *)ecpm;
+
+- (void)trackAdPlayEndEventWithUninType:(NSString *)adUnionType withPlacementId:(NSString *)adPlacementId withSourceId:(NSString *)adSourceId withAdType:(NSString *)adType withAdnType:(NSString *)adAdnType withEcpm:(NSNumber *)ecpm withDruation:(NSNumber *)duration withIsPlayOver:(BOOL)isPlayOver;
+
+
+/**
+ * 绑定数数账号
+ *
+ * @param taAccountId    数数的account_id
+ * @param taDistinctId  数数的distinct_id
+ */
+- (void)bindTAThirdPlatformWithAccountId:(NSString *)taAccountId withDistinctId:(NSString *)taDistinctId;
+
+#pragma mark - Action Track
+
+/**
+ Track Events
+
+ @param event         event name
+ */
+- (void)track:(NSString *)event;
+
+
+/**
+ Track Events
+
+ @param event         event name
+ @param propertieDict event properties
+ */
+- (void)track:(NSString *)event properties:(nullable NSDictionary *)propertieDict;
+
+/**
+ Track Events
+
+ @param event         event name
+ @param propertieDict event properties
+ @param time          event trigger time
+ */
+- (void)track:(NSString *)event properties:(nullable NSDictionary *)propertieDict time:(NSDate *)time __attribute__((deprecated("please use track:properties:time:timeZone: method")));
+
+/**
+ Track Events
+ 
+  @param event event name
+  @param propertieDict event properties
+  @param time event trigger time
+  @param timeZone event trigger time time zone
+  */
+- (void)track:(NSString *)event properties:(nullable NSDictionary *)propertieDict time:(NSDate *)time timeZone:(NSTimeZone *)timeZone;
+
+/**
+ Track Events
+ 
+  @param eventModel event Model
+  */
+- (void)trackWithEventModel:(GEEventModel *)eventModel;
+
+/**
+ Get the events collected in the App Extension and report them
+ 
+  @param appGroupId The app group id required for data sharing
+  */
+- (void)trackFromAppExtensionWithAppGroupId:(NSString *)appGroupId;
+
+#pragma mark -
+
+/**
+ Timing Events
+ Record the event duration, call this method to start the timing, stop the timing when the target event is uploaded, and add the attribute #duration to the event properties, in seconds.
+ */
+- (void)timeEvent:(NSString *)event;
+
+/**
+ Identify
+ Set the distinct ID to replace the default UUID distinct ID.
+ */
+- (void)identify:(NSString *)distinctId;
+
+/**
+ Get Distinctid
+ Get a visitor ID: The #distinct_id value in the reported data.
+ */
+- (NSString *)getDistinctId;
+
+/**
+ Get sdk version
+ */
++ (NSString *)getSDKVersion;
+
+/**
+ Login
+ Set the account ID. Each setting overrides the previous value. Login events will be uploaded.
+
+ @param clientId client ID
+ */
+- (void)login:(NSString *)clientId;
+
+/**
+ Logout with completion
+ Clearing the account ID and upload user logout events.
+ */
+- (void)logoutWithCompletion:(void(^)(void))completion;
+
+/**
+ User_Set
+ Sets the user property, replacing the original value with the new value if the property already exists.
+
+ @param properties user properties
+ */
+- (void)user_set:(NSDictionary *)properties;
+
+/**
+ User_Set
+
+ @param properties user properties
+ @param time event trigger time
+*/
+- (void)user_set:(NSDictionary *)properties withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Unset
+ 
+ @param propertyName user properties
+ */
+- (void)user_unset:(NSString *)propertyName;
+
+/**
+ User_Unset
+ Reset user properties.
+
+ @param propertyName user properties
+ @param time event trigger time
+*/
+- (void)user_unset:(NSString *)propertyName withTime:(NSDate * _Nullable)time;
+
+/**
+ User_SetOnce
+ Sets a single user attribute, ignoring the new attribute value if the attribute already exists.
+
+ @param properties user properties
+ */
+- (void)user_set_once:(NSDictionary *)properties;
+
+/**
+ User_SetOnce
+
+ @param properties user properties
+ @param time event trigger time
+*/
+- (void)user_set_once:(NSDictionary *)properties withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Add
+ Adds the numeric type user attributes.
+
+ @param properties user properties
+ */
+- (void)user_increment:(NSDictionary *)properties;
+
+/**
+ User_Add
+
+ @param properties user properties
+ @param time event trigger time
+*/
+- (void)user_increment:(NSDictionary *)properties withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Add
+
+  @param propertyName  propertyName
+  @param propertyValue propertyValue
+ */
+- (void)user_increment:(NSString *)propertyName andPropertyValue:(NSNumber *)propertyValue;
+
+/**
+ User_Add
+
+ @param propertyName  propertyName
+ @param propertyValue propertyValue
+ @param time event trigger time
+*/
+- (void)user_increment:(NSString *)propertyName andPropertyValue:(NSNumber *)propertyValue withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Number_Max
+ Get max number and save it
+
+ @param properties user properties
+ */
+- (void)user_number_max:(NSDictionary *)properties;
+
+/**
+ User_Number_Max
+
+ @param properties user properties
+ @param time event trigger time
+*/
+- (void)user_number_max:(NSDictionary *)properties withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Number_Max
+
+  @param propertyName  propertyName
+  @param propertyValue propertyValue
+ */
+- (void)user_number_max:(NSString *)propertyName andPropertyValue:(NSNumber *)propertyValue;
+
+/**
+ User_Number_Max
+
+ @param propertyName  propertyName
+ @param propertyValue propertyValue
+ @param time event trigger time
+*/
+- (void)user_number_max:(NSString *)propertyName andPropertyValue:(NSNumber *)propertyValue withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Number_Min
+ Get min number and save it
+
+ @param properties user properties
+ */
+- (void)user_number_min:(NSDictionary *)properties;
+
+/**
+ User_Number_Min
+
+ @param properties user properties
+ @param time event trigger time
+*/
+- (void)user_number_min:(NSDictionary *)properties withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Number_Min
+
+  @param propertyName  propertyName
+  @param propertyValue propertyValue
+ */
+- (void)user_number_min:(NSString *)propertyName andPropertyValue:(NSNumber *)propertyValue;
+
+/**
+ User_Number_Min
+
+ @param propertyName  propertyName
+ @param propertyValue propertyValue
+ @param time event trigger time
+*/
+- (void)user_number_min:(NSString *)propertyName andPropertyValue:(NSNumber *)propertyValue withTime:(NSDate * _Nullable)time;
+
+/**
+ User_Delete
+ Delete the user attributes,This operation is not reversible and should be performed with caution.
+ */
+- (void)user_delete;
+
+/**
+ User_Delete
+ 
+ @param time event trigger time
+ */
+- (void)user_delete:(NSDate * _Nullable)time;
+
+/**
+ User_Append
+ Append a user attribute of the List type.
+ 
+ @param properties user properties
+*/
+- (void)user_append:(NSDictionary<NSString *, NSArray *> *)properties;
+
+/**
+ User_Append
+ The element appended to the library needs to be done to remove the processing,and then import.
+ 
+ @param properties user properties
+ @param time event trigger time
+*/
+- (void)user_append:(NSDictionary<NSString *, NSArray *> *)properties withTime:(NSDate * _Nullable)time;
+
+/**
+ User_UniqAppend
+ 
+ @param properties user properties
+*/
+- (void)user_uniqAppend:(NSDictionary<NSString *, NSArray *> *)properties;
+
+/**
+ User_UniqAppend
+ 
+ @param properties user properties
+ @param time event trigger time
+*/
+- (void)user_uniqAppend:(NSDictionary<NSString *, NSArray *> *)properties withTime:(NSDate * _Nullable)time;
+
++ (void)setCustomerLibInfoWithLibName:(NSString *)libName libVersion:(NSString *)libVersion;
+
+/**
+ Static Super Properties
+ Set the public event attribute, which will be included in every event uploaded after that. The public event properties are saved without setting them each time.
+  *
+ */
+- (void)setSuperProperties:(NSDictionary *)properties;
+
+/**
+ Unset Super Property
+ Clears a public event attribute.
+ */
+- (void)unsetSuperProperty:(NSString *)property;
+
+/**
+ Clear Super Properties
+ Clear all public event attributes.
+ */
+- (void)clearSuperProperties;
+
+/**
+ Get Static Super Properties
+ Gets the public event properties that have been set.
+ */
+- (NSDictionary *)currentSuperProperties;
+
+/**
+ Dynamic super properties
+ Set dynamic public properties. Each event uploaded after that will contain a public event attribute.
+ */
+- (void)registerDynamicSuperProperties:(NSDictionary<NSString *, id> *(^)(void))dynamicSuperProperties;
+
+/**
+ Gets prefabricated properties for all events.
+ */
+- (GEPresetProperties *)getPresetProperties;
+
+/**
+ Set the network conditions for uploading. By default, the SDK will set the network conditions as 3G, 4G and Wifi to upload data
+ */
+- (void)setNetworkType:(GravityEngineNetworkType)type;
+
+#if TARGET_OS_IOS
+
+/**
+ Enable Auto-Tracking
+
+ @param eventType Auto-Tracking type
+
+ */
+- (void)enableAutoTrack:(GravityEngineAutoTrackEventType)eventType;
+
+/**
+ Enable the auto tracking function.
+
+ @param eventType  Auto-Tracking type
+ @param properties properties
+ */
+- (void)enableAutoTrack:(GravityEngineAutoTrackEventType)eventType properties:(NSDictionary *)properties;
+
+/**
+ Enable the auto tracking function.
+
+ @param eventType  Auto-Tracking type
+ @param callback callback
+ In the callback, eventType indicates the type of automatic collection, properties indicates the event properties before storage, and this block can return a dictionary for adding new properties
+ */
+- (void)enableAutoTrack:(GravityEngineAutoTrackEventType)eventType callback:(NSDictionary *(^)(GravityEngineAutoTrackEventType eventType, NSDictionary *properties))callback;
+
+/**
+ Set and Update the value of a custom property for Auto-Tracking
+ 
+ @param eventType  A list of GravityEngineAutoTrackEventType, indicating the types of automatic collection events that need to be enabled
+ @param properties properties
+ */
+- (void)setAutoTrackProperties:(GravityEngineAutoTrackEventType)eventType properties:(NSDictionary *)properties;
+
+/**
+ Ignore the Auto-Tracking of a page
+
+ @param controllers Ignore the name of the UIViewController
+ */
+- (void)ignoreAutoTrackViewControllers:(NSArray *)controllers;
+
+/**
+ Ignore the Auto-Tracking  of click event
+
+ @param aClass ignored controls  Class
+ */
+- (void)ignoreViewType:(Class)aClass;
+
+#endif
+
+//MARK: -
+
+/**
+ Get DeviceId
+ */
+- (NSString *)getDeviceId;
+
+- (NSString *)getCurrentClientId;
+
+/**
+ H5 is connected with the native APP SDK and used in conjunction with the addWebViewUserAgent interface
+
+ @param webView webView
+ @param request NSURLRequest request
+ @return YES:Process this request NO: This request has not been processed
+ */
+- (BOOL)showUpWebView:(id)webView WithRequest:(NSURLRequest *)request;
+
+/**
+ When connecting data with H5, you need to call this interface to configure UserAgent
+ */
+//- (void)addWebViewUserAgent;
+
+/**
+ Set Log level
+
+ */
++ (void)setLogLevel:(GELoggingLevel)level;
+
+/**
+ Empty the cache queue. When this api is called, the data in the current cache queue will attempt to be reported.
+ If the report succeeds, local cache data will be deleted.
+ */
+- (void)flush;
+
+- (void)flushWithCompletion:(void(^)(void))completion;
+
+- (void)testTest;
+
+/**
+ Switch reporting status
+
+ @param status GETrackStatus reporting status
+ */
+- (void)setTrackStatus: (GETrackStatus)status;
+
++ (void)calibrateTimeWithNtp:(NSString *)ntpServer;
+
++ (void)calibrateTime:(NSTimeInterval)timestamp;
+
+- (NSString *)getTimeString:(NSDate *)date;
+
+#if TARGET_OS_IOS
+- (void)enableThirdPartySharing:(GEThirdPartyShareType)type;
+
+- (void)enableThirdPartySharing:(GEThirdPartyShareType)type customMap:(NSDictionary<NSString *, NSObject *> *)customMap;
+#endif
+
++ (nullable NSString *)getLocalRegion;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 38 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/GravitySDK.h

@@ -0,0 +1,38 @@
+
+#import <Foundation/Foundation.h>
+
+#if __has_include(<GravityEngineSDK/GravityEngineSDK.h>)
+#import <GravityEngineSDK/GravityEngineSDK.h>
+#else
+#import "GravityEngineSDK.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEFirstEventModel.h>)
+#import <GravityEngineSDK/GEFirstEventModel.h>
+#else
+#import "GEFirstEventModel.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEEditableEventModel.h>)
+#import <GravityEngineSDK/GEEditableEventModel.h>
+#else
+#import "GEEditableEventModel.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEConfig.h>)
+#import <GravityEngineSDK/GEConfig.h>
+#else
+#import "GEConfig.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEPresetProperties.h>)
+#import <GravityEngineSDK/GEPresetProperties.h>
+#else
+#import "GEPresetProperties.h"
+#endif
+
+#if __has_include(<GravityEngineSDK/GEDeviceInfo.h>)
+#import <GravityEngineSDK/GEDeviceInfo.h>
+#else
+#import "GEDeviceInfo.h"
+#endif

+ 50 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Headers/UIView+GravityEngine.h

@@ -0,0 +1,50 @@
+//
+//  UIView+GravityEngine.h
+//  GravityEngineSDK
+//
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface UIView (GravityEngine)
+
+/**
+ Set the control element ID
+ */
+@property (copy,nonatomic) NSString *gravityEngineViewID;
+
+/**
+ Configure the control element ID of APPID
+ */
+@property (strong,nonatomic) NSDictionary *gravityEngineViewIDWithAppid;
+
+/**
+ Ignore the click event of a control
+ */
+@property (nonatomic,assign) BOOL gravityEngineIgnoreView;
+
+/**
+ Configure APPID to ignore the click event of a control
+ */
+@property (strong,nonatomic) NSDictionary *gravityEngineIgnoreViewWithAppid;
+
+/**
+ Properties of custom control click event
+ */
+@property (strong,nonatomic) NSDictionary *gravityEngineViewProperties;
+
+/**
+ Configure the properties of the APPID custom control click event
+ */
+@property (strong,nonatomic) NSDictionary *gravityEngineViewPropertiesWithAppid;
+
+/**
+ gravityEngineDelegate
+ */
+@property (nonatomic, weak, nullable) id gravityEngineDelegate;
+
+@end
+
+NS_ASSUME_NONNULL_END

BIN
plugin/gravity_engine/ios/GravityEngineSDK.framework/Info.plist


+ 6 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/Modules/module.modulemap

@@ -0,0 +1,6 @@
+framework module GravityEngineSDK {
+  umbrella header "GravityEngineSDK.h"
+  export *
+
+  module * { export * }
+}

+ 125 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/PrivacyInfo.xcprivacy

@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>NSPrivacyTracking</key>
+	<true/>
+	<key>NSPrivacyCollectedDataTypes</key>
+	<array>
+		<dict>
+			<key>NSPrivacyCollectedDataType</key>
+			<string>NSPrivacyCollectedDataTypeDeviceID</string>
+			<key>NSPrivacyCollectedDataTypeLinked</key>
+			<true/>
+			<key>NSPrivacyCollectedDataTypeTracking</key>
+			<true/>
+			<key>NSPrivacyCollectedDataTypePurposes</key>
+			<array>
+				<string>NSPrivacyCollectedDataTypePurposeThirdPartyAdvertising</string>
+				<string>NSPrivacyCollectedDataTypePurposeDeveloperAdvertising</string>
+				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyCollectedDataType</key>
+			<string>NSPrivacyCollectedDataTypePerformanceData</string>
+			<key>NSPrivacyCollectedDataTypeLinked</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypeTracking</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypePurposes</key>
+			<array>
+				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyCollectedDataType</key>
+			<string>NSPrivacyCollectedDataTypeOtherDataTypes</string>
+			<key>NSPrivacyCollectedDataTypeLinked</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypeTracking</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypePurposes</key>
+			<array>
+				<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyCollectedDataType</key>
+			<string>NSPrivacyCollectedDataTypeProductInteraction</string>
+			<key>NSPrivacyCollectedDataTypeLinked</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypeTracking</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypePurposes</key>
+			<array>
+				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyCollectedDataType</key>
+			<string>NSPrivacyCollectedDataTypeCrashData</string>
+			<key>NSPrivacyCollectedDataTypeLinked</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypeTracking</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypePurposes</key>
+			<array>
+				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyCollectedDataType</key>
+			<string>NSPrivacyCollectedDataTypeUserID</string>
+			<key>NSPrivacyCollectedDataTypeLinked</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypeTracking</key>
+			<false/>
+			<key>NSPrivacyCollectedDataTypePurposes</key>
+			<array>
+				<string>NSPrivacyCollectedDataTypePurposeAnalytics</string>
+			</array>
+		</dict>
+	</array>
+	<key>NSPrivacyTrackingDomains</key>
+	<array>
+		<string>backend.gravity-engine.com</string>
+	</array>
+	<key>NSPrivacyAccessedAPITypes</key>
+	<array>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>1C8F.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>E174.1</string>
+				<string>7D9E.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>35F9.1</string>
+			</array>
+		</dict>
+		<dict>
+			<key>NSPrivacyAccessedAPIType</key>
+			<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
+			<key>NSPrivacyAccessedAPITypeReasons</key>
+			<array>
+				<string>C617.1</string>
+			</array>
+		</dict>
+	</array>
+</dict>
+</plist>

BIN
plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeDirectory


BIN
plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeRequirements


BIN
plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeRequirements-1


+ 372 - 0
plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeResources

@@ -0,0 +1,372 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>files</key>
+	<dict>
+		<key>Headers/GEAutoTrackProtocol.h</key>
+		<data>
+		2ZPYyh7pG1NYb/qjn7PfXXVUCx4=
+		</data>
+		<key>Headers/GEAutoTrackPublicHeader.h</key>
+		<data>
+		b4xv1klqj24rh1CjDoYDeL+ItvY=
+		</data>
+		<key>Headers/GEConfig.h</key>
+		<data>
+		Z9isONSqqp4p45F24xHI3NJ4bVo=
+		</data>
+		<key>Headers/GEConstant.h</key>
+		<data>
+		miBCmIaI9KYF4vp9da31UqXLg5g=
+		</data>
+		<key>Headers/GEDeviceInfo.h</key>
+		<data>
+		svtSveXTL3DTSjDs4LT0cqfgmTc=
+		</data>
+		<key>Headers/GEEditableEventModel.h</key>
+		<data>
+		c9rygICMCnLp4c45Y2MkP8RdQp8=
+		</data>
+		<key>Headers/GEEventModel.h</key>
+		<data>
+		K2VI43CvR5AqHDpY7Tx54sjC9/k=
+		</data>
+		<key>Headers/GEFirstEventModel.h</key>
+		<data>
+		loN8apfNYaOqisWeNZxhIxLUT+s=
+		</data>
+		<key>Headers/GEOverwriteEventModel.h</key>
+		<data>
+		NuMpTpJpvEDlZIwH8PWNqcpBUdo=
+		</data>
+		<key>Headers/GEPresetProperties.h</key>
+		<data>
+		UznZL9yRmuogOEy6lB5fAjvbfxU=
+		</data>
+		<key>Headers/GESecretKey.h</key>
+		<data>
+		wZv9tfKTeyxh+5OdrQn/h522ASk=
+		</data>
+		<key>Headers/GESecurityPolicy.h</key>
+		<data>
+		7Dzt5gwcMBcUaYeVvQIKZlrUB60=
+		</data>
+		<key>Headers/GEUpdateEventModel.h</key>
+		<data>
+		CKaWTdja1psL0bb9N9zvxmUmFjk=
+		</data>
+		<key>Headers/GravityEngineSDK.h</key>
+		<data>
+		IiJ6vkLw+viWVKgDSH2WMqkCqWE=
+		</data>
+		<key>Headers/GravitySDK.h</key>
+		<data>
+		qQTXdNkpHVShzdQxCvoDh6N80KU=
+		</data>
+		<key>Headers/UIView+GravityEngine.h</key>
+		<data>
+		CMQqSOfTr8ZVPeaq9llQHjcN+y8=
+		</data>
+		<key>Info.plist</key>
+		<data>
+		2lUJPOS0XZb1phyA/DALHP3VuuY=
+		</data>
+		<key>Modules/module.modulemap</key>
+		<data>
+		MzLthyQ7aajebc/OA9Zf2kc4JEk=
+		</data>
+		<key>PrivacyInfo.xcprivacy</key>
+		<data>
+		fh8OMg52bBcwBc0aloTqzllFH8A=
+		</data>
+	</dict>
+	<key>files2</key>
+	<dict>
+		<key>Headers/GEAutoTrackProtocol.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			2ZPYyh7pG1NYb/qjn7PfXXVUCx4=
+			</data>
+			<key>hash2</key>
+			<data>
+			XzDtxE79r9mPfiDU8FevLNREMVopFYqamRBgpiRZGFY=
+			</data>
+		</dict>
+		<key>Headers/GEAutoTrackPublicHeader.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			b4xv1klqj24rh1CjDoYDeL+ItvY=
+			</data>
+			<key>hash2</key>
+			<data>
+			CghufXFPnABowC0m37IEl1fLbiFItEgnKnav4fOzz5M=
+			</data>
+		</dict>
+		<key>Headers/GEConfig.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			Z9isONSqqp4p45F24xHI3NJ4bVo=
+			</data>
+			<key>hash2</key>
+			<data>
+			234GeCZakxXUhSTWA39M9SQwMFNGoY6wdI8+J0huBzM=
+			</data>
+		</dict>
+		<key>Headers/GEConstant.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			miBCmIaI9KYF4vp9da31UqXLg5g=
+			</data>
+			<key>hash2</key>
+			<data>
+			5cL68UkO1/ccgTzIxzv8xMehc+u/ZrWZFk7BGpAaaPM=
+			</data>
+		</dict>
+		<key>Headers/GEDeviceInfo.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			svtSveXTL3DTSjDs4LT0cqfgmTc=
+			</data>
+			<key>hash2</key>
+			<data>
+			JhlZHCifb/QiDH4s8Fi5Tg88tkl4FSy5lx1bolusHoI=
+			</data>
+		</dict>
+		<key>Headers/GEEditableEventModel.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			c9rygICMCnLp4c45Y2MkP8RdQp8=
+			</data>
+			<key>hash2</key>
+			<data>
+			oytoW/uKiPI3ScFZ5D8IYXAwgAuSN6CW5tffr0sUkRQ=
+			</data>
+		</dict>
+		<key>Headers/GEEventModel.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			K2VI43CvR5AqHDpY7Tx54sjC9/k=
+			</data>
+			<key>hash2</key>
+			<data>
+			BJLyEFWz93ubqaISFclhnLGNR/VkFutwMBtXP78SsBI=
+			</data>
+		</dict>
+		<key>Headers/GEFirstEventModel.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			loN8apfNYaOqisWeNZxhIxLUT+s=
+			</data>
+			<key>hash2</key>
+			<data>
+			ovp3qWg/NaSmM3s5eekysttfIcsaPun4hJpD/MhrA/I=
+			</data>
+		</dict>
+		<key>Headers/GEOverwriteEventModel.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			NuMpTpJpvEDlZIwH8PWNqcpBUdo=
+			</data>
+			<key>hash2</key>
+			<data>
+			FNomA/moSj7I6BxBgJFs0Qy6y6UIdrZpi+GYHiPMY6M=
+			</data>
+		</dict>
+		<key>Headers/GEPresetProperties.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			UznZL9yRmuogOEy6lB5fAjvbfxU=
+			</data>
+			<key>hash2</key>
+			<data>
+			VJP0ho5Fu6S8cPbPA6sK8VP7zvsur1Y0/7S4Qlcj7LQ=
+			</data>
+		</dict>
+		<key>Headers/GESecretKey.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			wZv9tfKTeyxh+5OdrQn/h522ASk=
+			</data>
+			<key>hash2</key>
+			<data>
+			gF5KxWvHfTLxyNxEZIuM0YJr/YKM/wjfN3ij4D2FSMk=
+			</data>
+		</dict>
+		<key>Headers/GESecurityPolicy.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			7Dzt5gwcMBcUaYeVvQIKZlrUB60=
+			</data>
+			<key>hash2</key>
+			<data>
+			+K/Sq3MHS2rBFo42DkC3pAyu9JL8uXhssiqqZOjzMsk=
+			</data>
+		</dict>
+		<key>Headers/GEUpdateEventModel.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			CKaWTdja1psL0bb9N9zvxmUmFjk=
+			</data>
+			<key>hash2</key>
+			<data>
+			JX8q3AVV1EhloZjPn/R5HEyYiKHDLK+rgu9XI07gYhw=
+			</data>
+		</dict>
+		<key>Headers/GravityEngineSDK.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			IiJ6vkLw+viWVKgDSH2WMqkCqWE=
+			</data>
+			<key>hash2</key>
+			<data>
+			1C2UcEJ15RpjRz1KQQTtPabqv226l1i5nPOZEKjv4Ng=
+			</data>
+		</dict>
+		<key>Headers/GravitySDK.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			qQTXdNkpHVShzdQxCvoDh6N80KU=
+			</data>
+			<key>hash2</key>
+			<data>
+			5Uw8RCUbu7lGTcOZrLWSpd+zd28mV1Eiw4evxKV8hDs=
+			</data>
+		</dict>
+		<key>Headers/UIView+GravityEngine.h</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			CMQqSOfTr8ZVPeaq9llQHjcN+y8=
+			</data>
+			<key>hash2</key>
+			<data>
+			dvopqxzRYX9I77s9tM5q4lfkO4GyGza2g21CvpbqLO4=
+			</data>
+		</dict>
+		<key>Modules/module.modulemap</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			MzLthyQ7aajebc/OA9Zf2kc4JEk=
+			</data>
+			<key>hash2</key>
+			<data>
+			x2uuYj9zFEon1bAwThSWI7hpmIaRh9WiXDKc/W8p9Wg=
+			</data>
+		</dict>
+		<key>PrivacyInfo.xcprivacy</key>
+		<dict>
+			<key>hash</key>
+			<data>
+			fh8OMg52bBcwBc0aloTqzllFH8A=
+			</data>
+			<key>hash2</key>
+			<data>
+			dYSXmHpYREIqQGsxjPWNsuJR1xiIzmsPLLQCHj3B3mk=
+			</data>
+		</dict>
+	</dict>
+	<key>rules</key>
+	<dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^version.plist$</key>
+		<true/>
+	</dict>
+	<key>rules2</key>
+	<dict>
+		<key>.*\.dSYM($|/)</key>
+		<dict>
+			<key>weight</key>
+			<real>11</real>
+		</dict>
+		<key>^(.*/)?\.DS_Store$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>2000</real>
+		</dict>
+		<key>^.*</key>
+		<true/>
+		<key>^.*\.lproj/</key>
+		<dict>
+			<key>optional</key>
+			<true/>
+			<key>weight</key>
+			<real>1000</real>
+		</dict>
+		<key>^.*\.lproj/locversion.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>1100</real>
+		</dict>
+		<key>^Base\.lproj/</key>
+		<dict>
+			<key>weight</key>
+			<real>1010</real>
+		</dict>
+		<key>^Info\.plist$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^PkgInfo$</key>
+		<dict>
+			<key>omit</key>
+			<true/>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^embedded\.provisionprofile$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+		<key>^version\.plist$</key>
+		<dict>
+			<key>weight</key>
+			<real>20</real>
+		</dict>
+	</dict>
+</dict>
+</plist>

BIN
plugin/gravity_engine/ios/GravityEngineSDK.framework/_CodeSignature/CodeSignature


+ 10 - 0
plugin/gravity_engine/ios/gravity_engine.podspec

@@ -17,6 +17,16 @@ Pod::Spec.new do |s|
   s.dependency 'Flutter'
   s.platform = :ios, '12.0'
 
+  # 引入 GravityEngineSDK.framework指定其相对路径
+  s.vendored_frameworks = 'GravityEngineSDK.framework'
+  # 添加系统库依赖
+  s.frameworks = ['Security', 'SystemConfiguration', 'AppTrackingTransparency', 'AdSupport','AdServices']
+  # 对应 libz.tbd 和 libsqlite3.tbd
+  s.libraries = ['z', 'sqlite3']
+  s.xcconfig = {
+    'OTHER_LDFLAGS' => '-ObjC'
+  }
+
   # Flutter.framework does not contain a i386 slice.
   s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' }
   s.swift_version = '5.0'

+ 2 - 2
pubspec.lock

@@ -1493,10 +1493,10 @@ packages:
     dependency: transitive
     description:
       name: vm_service
-      sha256: f652077d0bdf60abe4c1f6377448e8655008eef28f128bc023f7b5e8dfeb48fc
+      sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
       url: "https://pub.dev"
     source: hosted
-    version: "14.2.4"
+    version: "14.2.5"
   wakelock_plus:
     dependency: transitive
     description:

+ 3 - 0
pubspec.yaml

@@ -99,6 +99,9 @@ dependencies:
   alipay_kit: ^6.0.0
   wechat_kit: ^6.0.1
   in_app_purchase: ^3.2.0
+wechat_kit:
+  app_id: "your_wechat_app_id"
+  universal_link: "https://your_applinks_domain/universal_link/your_app/wechat/"
 
 
 dev_dependencies: