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 */;

View File

@ -1,6 +1,15 @@
{
"originHash" : "6b6ce0f12bbd7c3a70ad4db9892c7afaef3ba38abf1df2e0ab744794af7d3b86",
"originHash" : "bdf5586d6171744520b6e9c884c2dbe9a16818e8af708876240fda75c94cb2f0",
"pins" : [
{
"identity" : "alibabacloud-oss-swift-sdk-v2",
"kind" : "remoteSourceControl",
"location" : "https://github.com/aliyun/alibabacloud-oss-swift-sdk-v2.git",
"state" : {
"revision" : "e208a6c3c55847f90944a5bb4453c2e2ce00f1b1",
"version" : "0.3.0"
}
},
{
"identity" : "kingfisher",
"kind" : "remoteSourceControl",
@ -18,6 +27,33 @@
"revision" : "2842e6e84e82eb9a8dac0100ca90d9444b0307f4",
"version" : "5.7.1"
}
},
{
"identity" : "swift-asn1",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-asn1.git",
"state" : {
"revision" : "a9a5efd40eaf558a2bcd48d64b1d1646be686008",
"version" : "1.7.1"
}
},
{
"identity" : "swift-crypto",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-crypto.git",
"state" : {
"revision" : "95ba0316a9b733e92bb6b071255ff46263bbe7dc",
"version" : "3.15.1"
}
},
{
"identity" : "xmlcoder",
"kind" : "remoteSourceControl",
"location" : "https://github.com/CoreOffice/XMLCoder.git",
"state" : {
"revision" : "42f62383dbcd074440cb1f6a750b9c02df9e7325",
"version" : "0.18.2"
}
}
],
"version" : 3