Implement profile tab with Android-aligned flows and OSS upload.

Add personal info page, account switch, real-name auth, withdrawal settings, session cache extensions, AlibabaCloudOSS SPM, and unit tests.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-06 16:01:05 +08:00
parent 02a80764ea
commit 005cac3f78
36 changed files with 4077 additions and 57 deletions

View File

@ -11,6 +11,7 @@
93FF17E52FFB84950033C304 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 93FF17E32FFB84950033C304 /* Kingfisher */; };
A1B2C3D12FFB84950033C305 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 93FF17E22FFB84950033C304 /* SnapKit */; };
A1B2C3D22FFB84950033C305 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = 93FF17E32FFB84950033C304 /* Kingfisher */; };
B2C3D4E12FFB84950033C306 /* AlibabaCloudOSS in Frameworks */ = {isa = PBXBuildFile; productRef = B2C3D4E32FFB84950033C306 /* AlibabaCloudOSS */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@ -61,6 +62,7 @@
files = (
93FF17E42FFB84950033C304 /* SnapKit in Frameworks */,
93FF17E52FFB84950033C304 /* Kingfisher in Frameworks */,
B2C3D4E12FFB84950033C306 /* AlibabaCloudOSS in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -116,6 +118,7 @@
packageProductDependencies = (
93FF17E22FFB84950033C304 /* SnapKit */,
93FF17E32FFB84950033C304 /* Kingfisher */,
B2C3D4E32FFB84950033C306 /* AlibabaCloudOSS */,
);
productName = suixinkan;
productReference = 93FF17C52FFB84950033C304 /* suixinkan.app */;
@ -148,14 +151,6 @@
};
/* End PBXNativeTarget section */
/* Begin PBXTargetDependency section */
A1B2C3D92FFB84950033C305 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 93FF17C42FFB84950033C304 /* suixinkan */;
targetProxy = A1B2C3D82FFB84950033C305 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXProject section */
93FF17BD2FFB84950033C304 /* Project object */ = {
isa = PBXProject;
@ -185,6 +180,7 @@
packageReferences = (
93FF17E02FFB84950033C304 /* XCRemoteSwiftPackageReference "SnapKit" */,
93FF17E12FFB84950033C304 /* XCRemoteSwiftPackageReference "Kingfisher" */,
B2C3D4E22FFB84950033C306 /* XCRemoteSwiftPackageReference "alibabacloud-oss-swift-sdk-v2" */,
);
preferredProjectObjectVersion = 77;
productRefGroup = 93FF17C62FFB84950033C304 /* Products */;
@ -231,6 +227,14 @@
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
A1B2C3D92FFB84950033C305 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 93FF17C42FFB84950033C304 /* suixinkan */;
targetProxy = A1B2C3D82FFB84950033C305 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
93FF17D92FFB84950033C304 /* Debug */ = {
isa = XCBuildConfiguration;
@ -425,29 +429,6 @@
};
name = Release;
};
A1B2C3DC2FFB84950033C305 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 56GVN5RNVN;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.yuanzhixiang.suixinkanTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SWIFT_APPROACHABLE_CONCURRENCY = YES;
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/suixinkan.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/suixinkan";
};
name = Debug;
};
A1B2C3DA2FFB84950033C305 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -471,6 +452,29 @@
};
name = Release;
};
A1B2C3DC2FFB84950033C305 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 56GVN5RNVN;
GENERATE_INFOPLIST_FILE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 16;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.yuanzhixiang.suixinkanTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
SWIFT_APPROACHABLE_CONCURRENCY = YES;
SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor;
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/suixinkan.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/suixinkan";
};
name = Debug;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@ -520,6 +524,14 @@
minimumVersion = 8.0.0;
};
};
B2C3D4E22FFB84950033C306 /* XCRemoteSwiftPackageReference "alibabacloud-oss-swift-sdk-v2" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/aliyun/alibabacloud-oss-swift-sdk-v2.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.3.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
@ -533,6 +545,11 @@
package = 93FF17E12FFB84950033C304 /* XCRemoteSwiftPackageReference "Kingfisher" */;
productName = Kingfisher;
};
B2C3D4E32FFB84950033C306 /* AlibabaCloudOSS */ = {
isa = XCSwiftPackageProductDependency;
package = B2C3D4E22FFB84950033C306 /* XCRemoteSwiftPackageReference "alibabacloud-oss-swift-sdk-v2" */;
productName = AlibabaCloudOSS;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 93FF17BD2FFB84950033C304 /* Project object */;