diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..af6e922 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/.idea +xcuserdata/ +*.xcuserstate diff --git a/README.md b/README.md index 46de511..836dade 100644 --- a/README.md +++ b/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 diff --git a/ShenQi.xcodeproj/project.pbxproj b/ShenQi.xcodeproj/project.pbxproj index daef818..7f88a88 100644 --- a/ShenQi.xcodeproj/project.pbxproj +++ b/ShenQi.xcodeproj/project.pbxproj @@ -103,7 +103,7 @@ 20B317F52CD4BA6700B29987 /* NSObject+YYModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSObject+YYModel.m"; sourceTree = ""; }; 20B317F62CD4BA6700B29987 /* YYClassInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = YYClassInfo.m; sourceTree = ""; }; 20B317F72CD4BA6700B29987 /* NSObject+YYModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSObject+YYModel.h"; sourceTree = ""; }; - 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 = ""; }; 20B61C7C29DC008500CE7946 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 20B61C8529DC008500CE7946 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; @@ -253,7 +253,7 @@ 20B61C7929DC008500CE7946 /* Products */ = { isa = PBXGroup; children = ( - 20B61C7829DC008500CE7946 /* TESTAPP.app */, + 20B61C7829DC008500CE7946 /* jpot9.app */, ); name = Products; sourceTree = ""; @@ -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; diff --git a/ShenQi.xcodeproj/xcshareddata/xcschemes/SQNoti.xcscheme b/ShenQi.xcodeproj/xcshareddata/xcschemes/SQNoti.xcscheme index bd75b11..e25010c 100644 --- a/ShenQi.xcodeproj/xcshareddata/xcschemes/SQNoti.xcscheme +++ b/ShenQi.xcodeproj/xcshareddata/xcschemes/SQNoti.xcscheme @@ -30,7 +30,7 @@ @@ -61,7 +61,7 @@ @@ -80,7 +80,7 @@ diff --git a/ShenQi.xcodeproj/xcshareddata/xcschemes/ShenQi.xcscheme b/ShenQi.xcodeproj/xcshareddata/xcschemes/ShenQi.xcscheme index 39e79e9..f2bf9cd 100644 --- a/ShenQi.xcodeproj/xcshareddata/xcschemes/ShenQi.xcscheme +++ b/ShenQi.xcodeproj/xcshareddata/xcschemes/ShenQi.xcscheme @@ -15,7 +15,7 @@ @@ -45,7 +45,7 @@ @@ -62,7 +62,7 @@ diff --git a/ShenQi/Assets.xcassets/AppIcon.appiconset/Contents.json b/ShenQi/Assets.xcassets/AppIcon.appiconset/Contents.json index 7c5cd29..f434400 100644 --- a/ShenQi/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ShenQi/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "app_logo.png", + "filename" : "logo.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/ShenQi/Assets.xcassets/AppIcon.appiconset/app_logo.png b/ShenQi/Assets.xcassets/AppIcon.appiconset/app_logo.png deleted file mode 100644 index 9475367..0000000 Binary files a/ShenQi/Assets.xcassets/AppIcon.appiconset/app_logo.png and /dev/null differ diff --git a/ShenQi/Assets.xcassets/AppIcon.appiconset/logo.png b/ShenQi/Assets.xcassets/AppIcon.appiconset/logo.png new file mode 100644 index 0000000..ac845c3 Binary files /dev/null and b/ShenQi/Assets.xcassets/AppIcon.appiconset/logo.png differ diff --git a/ShenQi/Assets.xcassets/appLogo.imageset/Contents.json b/ShenQi/Assets.xcassets/appLogo.imageset/Contents.json index 593182a..5f670ca 100644 --- a/ShenQi/Assets.xcassets/appLogo.imageset/Contents.json +++ b/ShenQi/Assets.xcassets/appLogo.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "app_logo.png", + "filename" : "logo.png", "idiom" : "universal", "scale" : "1x" }, diff --git a/ShenQi/Assets.xcassets/appLogo.imageset/app_logo.png b/ShenQi/Assets.xcassets/appLogo.imageset/app_logo.png deleted file mode 100644 index 9475367..0000000 Binary files a/ShenQi/Assets.xcassets/appLogo.imageset/app_logo.png and /dev/null differ diff --git a/ShenQi/Assets.xcassets/appLogo.imageset/logo.png b/ShenQi/Assets.xcassets/appLogo.imageset/logo.png new file mode 100644 index 0000000..ac845c3 Binary files /dev/null and b/ShenQi/Assets.xcassets/appLogo.imageset/logo.png differ diff --git a/ShenQi/GoogleService-Info.plist b/ShenQi/GoogleService-Info.plist index 2be4502..73471ac 100644 --- a/ShenQi/GoogleService-Info.plist +++ b/ShenQi/GoogleService-Info.plist @@ -3,17 +3,17 @@ API_KEY - AIzaSyAf2aoBSP5qZE6A4XVkCTGL_LayRqAnhCY + AIzaSyDaNgTnrrFkK5b9i3DyIu2p-M1E2Vewlz8 GCM_SENDER_ID - 541726336017 + 324671180568 PLIST_VERSION 1 BUNDLE_ID - noti.pantas3342 + noti.jpot9 PROJECT_ID - pantas3342 + jpot9-d02d7 STORAGE_BUCKET - pantas3342.firebasestorage.app + jpot9-d02d7.firebasestorage.app IS_ADS_ENABLED IS_ANALYTICS_ENABLED @@ -25,6 +25,6 @@ IS_SIGNIN_ENABLED GOOGLE_APP_ID - 1:541726336017:ios:4df0bdf58876ea8e7b7db0 + 1:324671180568:ios:60ef228c6713b81230986d \ No newline at end of file diff --git a/ShenQi/MacroDefine.h b/ShenQi/MacroDefine.h index bd53bbd..e3fe73b 100644 --- a/ShenQi/MacroDefine.h +++ b/ShenQi/MacroDefine.h @@ -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 */ diff --git a/ShenQi/MainOldViewController.m b/ShenQi/MainOldViewController.m index 873b4f1..971325d 100644 --- a/ShenQi/MainOldViewController.m +++ b/ShenQi/MainOldViewController.m @@ -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;