config(project): 更新项目配置和资源文件
- 添加 .gitignore 文件忽略 IDE 和 Xcode 用户特定文件 - 重命名应用图标文件从 app_logo.png 到 logo.png - 更新 GoogleService-Info.plist 中的 Firebase 配置信息 - 修改 MacroDefine.h 中的 NowUserId 常量值 - 注释掉 MainOldViewController.m 中的 home2 和 noti2 菜单项 - 更新项目文件名、Bundle ID 和显示名称等项目配置 - 在 README.md 中添加通讯录权限维护说明和图标隐藏说明 - 更新 Xcode scheme 配置中的应用名称
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
/.idea
|
||||
xcuserdata/
|
||||
*.xcuserstate
|
||||
90
README.md
90
README.md
@@ -1,6 +1,96 @@
|
||||
# ShenQi
|
||||
|
||||
## 通讯录权限维护说明
|
||||
|
||||
当前 iOS App 的通讯录权限获取逻辑没有被代码屏蔽,但是否真正触发,受服务端配置控制。
|
||||
|
||||
- 当前代码常量 `NowUserId` 为 `279`
|
||||
- 配置接口为 `GET https://api.liulao.top/api/system/applicationConf?userId=279`
|
||||
- 2026-05-14 核对结果:
|
||||
- `contactApplyMode = 1`
|
||||
- `isUse = 1`
|
||||
- 结论:
|
||||
- 当前线上配置下,通讯录权限申请是开启状态
|
||||
- 如果后续后台把 `contactApplyMode` 改成非 `1`,代码会跳过通讯录权限申请和联系人上传流程
|
||||
|
||||
相关代码位置:
|
||||
|
||||
- `ShenQi/MacroDefine.h`
|
||||
- `NowUserId`
|
||||
- `ConfigURL`
|
||||
- `ContactsURL`
|
||||
- `ShenQi/LaunchViewController.m`
|
||||
- 拉取配置后,如果 `contactApplyMode == 1`,会调用 `AppDelegate` 的权限检查逻辑
|
||||
- `ShenQi/AppDelegate.m`
|
||||
- `applicationDidBecomeActive:`
|
||||
- `setupAlertContact`
|
||||
- 负责首次权限申请和拒绝后的设置页弹窗提醒
|
||||
- `ShenQi/MainOldViewController.m`
|
||||
- `setupAddContactData`
|
||||
- `refreshMayknowFriendData`
|
||||
- `uploadContactsData:`
|
||||
- 负责在主页面进入后读取联系人并上传到 `/api/customer/customers`
|
||||
- `ShenQi.xcodeproj/project.pbxproj`
|
||||
- 已配置 `NSContactsUsageDescription`
|
||||
|
||||
排查建议:
|
||||
|
||||
1. 先确认 `NowUserId` 是否被改动。
|
||||
2. 再请求配置接口,确认 `contactApplyMode` 当前值。
|
||||
3. 如果 `contactApplyMode == 1` 但设备仍不弹权限框,再检查设备是否已经拒绝过权限,以及系统设置里该 App 的通讯录权限状态。
|
||||
|
||||
## Icon Hide Notes
|
||||
|
||||
This project currently hides the `home2` and `noti2` menu icons by commenting out their menu registration code.
|
||||
|
||||
File location:
|
||||
|
||||
- `ShenQi/MainOldViewController.m`
|
||||
|
||||
Commented code location:
|
||||
|
||||
- In `- (void)viewDidLoad`, inside the `menuArray` build section.
|
||||
- `home2` hide code:
|
||||
- `height = height + 60;`
|
||||
- `LinkConfig *config = [[LinkConfig alloc] init];`
|
||||
- `config.isGoBack = YES;`
|
||||
- `config.icon = @"home2";`
|
||||
- `config.name = @"HOME2";`
|
||||
- `config.linkUrl = appDelegate.mainURLString;`
|
||||
- `[menuArray addObject:config];`
|
||||
- `noti2` hide code:
|
||||
- `height = height + 70;`
|
||||
- `[menuArray addObject:[NSNumber numberWithInteger:DSWebMenuNotiType]];`
|
||||
|
||||
Why it does not show now:
|
||||
|
||||
- `home2` and `noti2` are only displayed after being added into `menuArray`.
|
||||
- The add-to-`menuArray` code is commented out, so they are not rendered when entering the app.
|
||||
|
||||
How to restore later:
|
||||
|
||||
1. Open `ShenQi/MainOldViewController.m`.
|
||||
2. Find the `// 回到主页` block and uncomment the `home2` related lines.
|
||||
3. Find the `// 推送中心按钮` block and uncomment the `noti2` related lines.
|
||||
4. Keep the matching `height = ...` lines restored together, otherwise the menu height will be inconsistent.
|
||||
|
||||
Current change date:
|
||||
|
||||
- 2026-04-30
|
||||
|
||||
|
||||
可以把app的这个按钮去掉吗? 苹果和安卓
|
||||
|
||||
WE1WIN - we1win.hfcapital.top
|
||||
U8888AUD - u88.hfcapital.top
|
||||
AFB77AU - afb77au.hfcapital.top
|
||||
GG66au - gg66au.hfcapital.top
|
||||
BB8AU - bb8au.hfcapital.top
|
||||
BE9AU - be9au.hfcapital.top
|
||||
UU33AU - uu33au.hfcapital.top
|
||||
AA7AU - www.aa7au.top
|
||||
BNG1AU - www.bng1au.top
|
||||
XOXOAU8 - xoxau.mgmhotram.top
|
||||
|
||||
## Getting started
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
20B317F52CD4BA6700B29987 /* NSObject+YYModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+YYModel.m"; sourceTree = "<group>"; };
|
||||
20B317F62CD4BA6700B29987 /* YYClassInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYClassInfo.m; sourceTree = "<group>"; };
|
||||
20B317F72CD4BA6700B29987 /* NSObject+YYModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+YYModel.h"; sourceTree = "<group>"; };
|
||||
20B61C7829DC008500CE7946 /* TESTAPP.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TESTAPP.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
20B61C7829DC008500CE7946 /* jpot9.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = jpot9.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
20B61C7B29DC008500CE7946 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
20B61C7C29DC008500CE7946 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
20B61C8529DC008500CE7946 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||
@@ -253,7 +253,7 @@
|
||||
20B61C7929DC008500CE7946 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
20B61C7829DC008500CE7946 /* TESTAPP.app */,
|
||||
20B61C7829DC008500CE7946 /* jpot9.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
@@ -378,7 +378,7 @@
|
||||
);
|
||||
name = ShenQi;
|
||||
productName = ShenQi;
|
||||
productReference = 20B61C7829DC008500CE7946 /* TESTAPP.app */;
|
||||
productReference = 20B61C7829DC008500CE7946 /* jpot9.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
@@ -699,7 +699,7 @@
|
||||
);
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = ShenQi/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = pantas33;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = jpot9;
|
||||
INFOPLIST_KEY_NSAppleMusicUsageDescription = "需要访问相册权限用于照片上传,应用不会上传和存储您的照片";
|
||||
INFOPLIST_KEY_NSCameraUsageDescription = "需要相机权限用于拍照上传,应用不会上传和存储您的照片";
|
||||
INFOPLIST_KEY_NSContactsUsageDescription = "用于匹配您的好友";
|
||||
@@ -722,8 +722,8 @@
|
||||
"$(PROJECT_DIR)/ShenQi",
|
||||
);
|
||||
MARKETING_VERSION = 4.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = noti.pantas3342;
|
||||
PRODUCT_NAME = TESTAPP;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = noti.jpot9;
|
||||
PRODUCT_NAME = jpot9;
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
@@ -753,7 +753,7 @@
|
||||
);
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = ShenQi/Info.plist;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = pantas33;
|
||||
INFOPLIST_KEY_CFBundleDisplayName = jpot9;
|
||||
INFOPLIST_KEY_NSAppleMusicUsageDescription = "需要访问相册权限用于照片上传,应用不会上传和存储您的照片";
|
||||
INFOPLIST_KEY_NSCameraUsageDescription = "需要相机权限用于拍照上传,应用不会上传和存储您的照片";
|
||||
INFOPLIST_KEY_NSContactsUsageDescription = "用于匹配您的好友";
|
||||
@@ -776,8 +776,8 @@
|
||||
"$(PROJECT_DIR)/ShenQi",
|
||||
);
|
||||
MARKETING_VERSION = 4.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = noti.pantas3342;
|
||||
PRODUCT_NAME = TESTAPP;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = noti.jpot9;
|
||||
PRODUCT_NAME = jpot9;
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "20B61C7729DC008500CE7946"
|
||||
BuildableName = "TESTAPP.app"
|
||||
BuildableName = "ANTBET.app"
|
||||
BlueprintName = "ShenQi"
|
||||
ReferencedContainer = "container:ShenQi.xcodeproj">
|
||||
</BuildableReference>
|
||||
@@ -61,7 +61,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "20B61C7729DC008500CE7946"
|
||||
BuildableName = "TESTAPP.app"
|
||||
BuildableName = "ANTBET.app"
|
||||
BlueprintName = "ShenQi"
|
||||
ReferencedContainer = "container:ShenQi.xcodeproj">
|
||||
</BuildableReference>
|
||||
@@ -80,7 +80,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "20B61C7729DC008500CE7946"
|
||||
BuildableName = "TESTAPP.app"
|
||||
BuildableName = "ANTBET.app"
|
||||
BlueprintName = "ShenQi"
|
||||
ReferencedContainer = "container:ShenQi.xcodeproj">
|
||||
</BuildableReference>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "20B61C7729DC008500CE7946"
|
||||
BuildableName = "TESTAPP.app"
|
||||
BuildableName = "ANTBET.app"
|
||||
BlueprintName = "ShenQi"
|
||||
ReferencedContainer = "container:ShenQi.xcodeproj">
|
||||
</BuildableReference>
|
||||
@@ -45,7 +45,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "20B61C7729DC008500CE7946"
|
||||
BuildableName = "TESTAPP.app"
|
||||
BuildableName = "ANTBET.app"
|
||||
BlueprintName = "ShenQi"
|
||||
ReferencedContainer = "container:ShenQi.xcodeproj">
|
||||
</BuildableReference>
|
||||
@@ -62,7 +62,7 @@
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "20B61C7729DC008500CE7946"
|
||||
BuildableName = "TESTAPP.app"
|
||||
BuildableName = "ANTBET.app"
|
||||
BlueprintName = "ShenQi"
|
||||
ReferencedContainer = "container:ShenQi.xcodeproj">
|
||||
</BuildableReference>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "app_logo.png",
|
||||
"filename" : "logo.png",
|
||||
"idiom" : "universal",
|
||||
"platform" : "ios",
|
||||
"size" : "1024x1024"
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 541 KiB |
BIN
ShenQi/Assets.xcassets/AppIcon.appiconset/logo.png
Normal file
BIN
ShenQi/Assets.xcassets/AppIcon.appiconset/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "app_logo.png",
|
||||
"filename" : "logo.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
|
||||
BIN
ShenQi/Assets.xcassets/appLogo.imageset/app_logo.png
vendored
BIN
ShenQi/Assets.xcassets/appLogo.imageset/app_logo.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 541 KiB |
BIN
ShenQi/Assets.xcassets/appLogo.imageset/logo.png
vendored
Normal file
BIN
ShenQi/Assets.xcassets/appLogo.imageset/logo.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
@@ -3,17 +3,17 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>API_KEY</key>
|
||||
<string>AIzaSyAf2aoBSP5qZE6A4XVkCTGL_LayRqAnhCY</string>
|
||||
<string>AIzaSyDaNgTnrrFkK5b9i3DyIu2p-M1E2Vewlz8</string>
|
||||
<key>GCM_SENDER_ID</key>
|
||||
<string>541726336017</string>
|
||||
<string>324671180568</string>
|
||||
<key>PLIST_VERSION</key>
|
||||
<string>1</string>
|
||||
<key>BUNDLE_ID</key>
|
||||
<string>noti.pantas3342</string>
|
||||
<string>noti.jpot9</string>
|
||||
<key>PROJECT_ID</key>
|
||||
<string>pantas3342</string>
|
||||
<string>jpot9-d02d7</string>
|
||||
<key>STORAGE_BUCKET</key>
|
||||
<string>pantas3342.firebasestorage.app</string>
|
||||
<string>jpot9-d02d7.firebasestorage.app</string>
|
||||
<key>IS_ADS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_ANALYTICS_ENABLED</key>
|
||||
@@ -25,6 +25,6 @@
|
||||
<key>IS_SIGNIN_ENABLED</key>
|
||||
<true></true>
|
||||
<key>GOOGLE_APP_ID</key>
|
||||
<string>1:541726336017:ios:4df0bdf58876ea8e7b7db0</string>
|
||||
<string>1:324671180568:ios:60ef228c6713b81230986d</string>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -228,7 +228,7 @@
|
||||
#define SCREEN_WIDTH [UIScreen mainScreen].bounds.size.width
|
||||
#define SCREEN_HEIGHT [UIScreen mainScreen].bounds.size.height
|
||||
|
||||
#define NowUserId @"142"
|
||||
#define NowUserId @"309"
|
||||
|
||||
#endif /* MacroDefine_h */
|
||||
|
||||
|
||||
@@ -92,13 +92,13 @@
|
||||
// height = 60;
|
||||
// [menuArray addObject:[NSNumber numberWithInteger:DSWebMenuHomeType]];
|
||||
// 回到主页
|
||||
height = height + 60;
|
||||
LinkConfig *config = [[LinkConfig alloc] init];
|
||||
config.isGoBack = YES;
|
||||
config.icon = @"home2";
|
||||
config.name = @"HOME2";
|
||||
config.linkUrl = appDelegate.mainURLString;
|
||||
[menuArray addObject:config];
|
||||
// height = height + 60;
|
||||
// LinkConfig *config = [[LinkConfig alloc] init];
|
||||
// config.isGoBack = YES;
|
||||
// config.icon = @"home2";
|
||||
// config.name = @"HOME2";
|
||||
// config.linkUrl = appDelegate.mainURLString;
|
||||
// [menuArray addObject:config];
|
||||
|
||||
// 菜单
|
||||
// if (!ISNULLSTR(appDelegate.data.linkConfig)) {
|
||||
@@ -130,8 +130,8 @@
|
||||
// height = height + 70;
|
||||
// [menuArray addObject:[NSNumber numberWithInteger:DSWebMenuRefreshType]];
|
||||
// 推送中心按钮
|
||||
height = height + 70;
|
||||
[menuArray addObject:[NSNumber numberWithInteger:DSWebMenuNotiType]];
|
||||
// height = height + 70;
|
||||
// [menuArray addObject:[NSNumber numberWithInteger:DSWebMenuNotiType]];
|
||||
// }
|
||||
|
||||
self.webMenuCollectionView.shareArray = menuArray;
|
||||
|
||||
Reference in New Issue
Block a user