接入友盟统计与 U-APM,并优化宣传页打卡点标签交互。

友盟 SDK 改为隐私同意后再初始化;宣传页标签新增滑块位移动画,超过 5 个时选中项自动滚动居中。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-03 09:23:15 +08:00
parent c7f557f361
commit 00c3cd0a93
134 changed files with 6555 additions and 590 deletions

54
Podfile
View File

@ -11,22 +11,31 @@ target 'suixinkan' do
# 微信 Open SDK分享能力不调用支付 API
pod 'WechatOpenSDK-XCFramework', '~> 2.0.4'
# 友盟 SDK统计分析与应用性能监控初始化需等用户同意隐私政策后再触发
pod 'UMCommon'
pod 'UMDevice'
pod 'UMAPM'
target 'suixinkanTests' do
inherit! :search_paths
end
end
# 模拟器可用的链接参数(不含高德 prebuilt framework但保留微信 SDK
SIMULATOR_OTHER_LDFLAGS = <<~FLAGS.squish
-ObjC -l"c++" -l"sqlite3.0" -l"z"
-framework "CoreGraphics" -framework "CoreLocation" -framework "CoreTelephony"
-framework "CoreText" -framework "ExternalAccessory" -framework "GLKit"
-framework "OpenGLES" -framework "QuartzCore" -framework "Security"
-framework "SystemConfiguration" -framework "UIKit" -framework "WebKit"
-framework "WechatOpenSDK"
FLAGS
AMAP_SIMULATOR_FRAMEWORK_NAMES = %w[
AMapFoundationKit
AMapLocationKit
AMapSearchKit
MAMapKit
].freeze
SIMULATOR_FRAMEWORK_SEARCH_PATHS = '"${PODS_ROOT}/WechatOpenSDK-XCFramework" "${PODS_XCFRAMEWORKS_BUILD_DIR}/WechatOpenSDK-XCFramework"'
def other_ldflags_without_amap(other_ldflags)
stripped = other_ldflags.dup
AMAP_SIMULATOR_FRAMEWORK_NAMES.each do |framework_name|
stripped = stripped.gsub(/ -framework "#{Regexp.escape(framework_name)}"/, '')
end
stripped
end
post_install do |installer|
# 1. 修正 aggregate xcconfig去掉 arm64 排除,模拟器单独链接(不链 AMap
@ -36,23 +45,14 @@ post_install do |installer|
content = File.read(path)
content.gsub!("EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64\n", '')
# 模拟器链接微信 SDK同时剥离高德 framework
content.gsub!(
/OTHER_LDFLAGS\[sdk=iphonesimulator\*\] = .*\n/,
"OTHER_LDFLAGS[sdk=iphonesimulator*] = #{SIMULATOR_OTHER_LDFLAGS}\n"
)
if content.include?('FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*]')
content.gsub!(
/FRAMEWORK_SEARCH_PATHS\[sdk=iphonesimulator\*\] = .*\n/,
"FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*] = $(inherited) #{SIMULATOR_FRAMEWORK_SEARCH_PATHS}\n"
)
else
content << "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*] = $(inherited) #{SIMULATOR_FRAMEWORK_SEARCH_PATHS}\n"
end
unless content.include?('OTHER_LDFLAGS[sdk=iphonesimulator*]')
content << "\nOTHER_LDFLAGS[sdk=iphonesimulator*] = #{SIMULATOR_OTHER_LDFLAGS}\n"
content << "FRAMEWORK_SEARCH_PATHS[sdk=iphonesimulator*] = $(inherited) #{SIMULATOR_FRAMEWORK_SEARCH_PATHS}\n"
# 模拟器剥离高德 framework,但保留 CocoaPods 生成的微信、友盟和其他依赖链接参数。
# 真机条件下再补回完整链接参数,避免真机能力受影响。
if (device_ldflags = content[/^OTHER_LDFLAGS = (.*)$/, 1])
simulator_ldflags = other_ldflags_without_amap(device_ldflags)
content.gsub!(/^OTHER_LDFLAGS = .*\n/, "OTHER_LDFLAGS = #{simulator_ldflags}\n")
content.gsub!(/OTHER_LDFLAGS\[sdk=iphonesimulator\*\] = .*\n/, '')
content.gsub!(/OTHER_LDFLAGS\[sdk=iphoneos\*\] = .*\n/, '')
content << "\nOTHER_LDFLAGS[sdk=iphoneos*] = #{device_ldflags}\n"
end
File.write(path, content)