Browse Source

【功能增加】新增多边形电子围栏功能

master
公司电脑 2 years ago
parent
commit
8f0dbd8fa3
  1. 32
      LekangGuard.xcodeproj/project.pbxproj
  2. 2
      LekangGuard.xcodeproj/xcuserdata/ecell.xcuserdatad/xcschemes/xcschememanagement.plist
  3. BIN
      LekangGuard.xcworkspace/xcuserdata/ecell.xcuserdatad/UserInterfaceState.xcuserstate
  4. 56
      LekangGuard.xcworkspace/xcuserdata/ecell.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  5. 24
      LekangGuard/AppDelegate.m
  6. 21
      LekangGuard/Assets.xcassets/Common/comm_selectBtn_Normal.imageset/Contents.json
  7. BIN
      LekangGuard/Assets.xcassets/Common/comm_selectBtn_Normal.imageset/comm_selectBtn_Normal@2x.png
  8. 21
      LekangGuard/Assets.xcassets/Common/comm_selectBtn_Select.imageset/Contents.json
  9. BIN
      LekangGuard/Assets.xcassets/Common/comm_selectBtn_Select.imageset/comm_selectBtn_Select@2x.png
  10. 21
      LekangGuard/Assets.xcassets/Map/map_weilan_select.imageset/Contents.json
  11. BIN
      LekangGuard/Assets.xcassets/Map/map_weilan_select.imageset/map_weilan_select@2x.png
  12. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-1.imageset/q-en-1@2x.png
  13. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-1.imageset/q-en-1@3x.png
  14. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-2.imageset/q-en-2@2x.png
  15. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-2.imageset/q-en-2@3x.png
  16. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-3.imageset/q-en-3@2x.png
  17. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-3.imageset/q-en-3@3x.png
  18. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-4.imageset/q-en-4@2x.png
  19. BIN
      LekangGuard/Assets.xcassets/启动图/q-en-4.imageset/q-en-4@3x.png
  20. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-1.imageset/q-zh-1@2x.png
  21. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-1.imageset/q-zh-1@3x.png
  22. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-2.imageset/q-zh-2@2x.png
  23. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-2.imageset/q-zh-2@3x.png
  24. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-3.imageset/q-zh-3@2x.png
  25. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-3.imageset/q-zh-3@3x.png
  26. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-4.imageset/q-zh-4@2x.png
  27. BIN
      LekangGuard/Assets.xcassets/启动图/q-zh-4.imageset/q-zh-4@3x.png
  28. 2
      LekangGuard/Common/Const.h
  29. 8
      LekangGuard/Common/UICommon.m
  30. 2
      LekangGuard/Common/tabBar/TabBarViewController.m
  31. 5
      LekangGuard/Home/Contacts(电话本)/ChoosePersonAddressVC.h
  32. 42
      LekangGuard/Home/Contacts(电话本)/ChoosePersonAddressVC.m
  33. 2
      LekangGuard/Home/Contacts(电话本)/ContactsViewController.m
  34. 2
      LekangGuard/Home/Contacts(电话本)/View/ChooseContactTableViewCell.h
  35. 13
      LekangGuard/Home/Contacts(电话本)/View/ChooseContactTableViewCell.m
  36. 9
      LekangGuard/Home/Family(亲情号)/AddFamilyNumberViewController.m
  37. 2
      LekangGuard/Home/Family(亲情号)/View/FamilyNumberTableViewCell.m
  38. 18
      LekangGuard/Home/Homes/HomeViewController.m
  39. 13
      LekangGuard/Home/Homes/View/HomeHeaderView.m
  40. 6
      LekangGuard/Home/MoreService (更多功能)/View/FunctionView.m
  41. 4
      LekangGuard/Home/VideoChat(视频聊天)/1v1/JuPhoonCallViewController.m
  42. 4
      LekangGuard/Home/VideoChat(视频聊天)/Bairui/VideoViewController.m
  43. 4
      LekangGuard/Home/VideoChat(视频聊天)/VideoChatViewController.m
  44. 4
      LekangGuard/Home/VideoChat(视频聊天)/tihu/TihuVideoCallViewController.m
  45. 1
      LekangGuard/Info.plist
  46. BIN
      LekangGuard/LaunchScreenImg@2x.png
  47. BIN
      LekangGuard/LaunchScreenImg@3x.png
  48. 5
      LekangGuard/LekangGuard.pch
  49. 5
      LekangGuard/Login/LoginViewController.m
  50. 2
      LekangGuard/Login/RegisterViewController.h
  51. 129
      LekangGuard/Login/RegisterViewController.m
  52. 17
      LekangGuard/Managers/UIURL.h
  53. 228
      LekangGuard/Map/Fence(电子围栏)/AddRailViewController.m
  54. 6
      LekangGuard/Map/Fence(电子围栏)/Model/SafetyRailModel.h
  55. 23
      LekangGuard/Map/Fence(电子围栏)/MoreRailAddressViewController.h
  56. 454
      LekangGuard/Map/Fence(电子围栏)/MoreRailAddressViewController.m
  57. 9
      LekangGuard/Map/Fence(电子围栏)/RailAddressViewController.m
  58. 2
      LekangGuard/Map/Fence(电子围栏)/RailSearchAddressVC.m
  59. 5
      LekangGuard/Map/Fence(电子围栏)/View/ElectronicFenceTableViewCell.m
  60. 4
      LekangGuard/Map/VC/MapViewController.m
  61. 4
      LekangGuard/My/About(关于我们)/AboutViewController.m
  62. 4
      LekangGuard/My/Message(消息)/MessageViewController.h
  63. 32
      LekangGuard/My/Message(消息)/MessageViewController.m
  64. 10
      LekangGuard/My/VC/MyViewController.m
  65. 4
      LekangGuard/My/VC/View/MyTableViewCell.m
  66. 0
      LekangGuard/Protection(守护星)/VC/AttentionMessageViewController.h
  67. 31
      LekangGuard/Protection(守护星)/VC/AttentionMessageViewController.m
  68. 16
      LekangGuard/Protection(守护星)/VC/MemberListViewController.h
  69. 234
      LekangGuard/Protection(守护星)/VC/MemberListViewController.m
  70. 21
      LekangGuard/Protection(守护星)/VC/MemberManagementViewController.h
  71. 73
      LekangGuard/Protection(守护星)/VC/MemberManagementViewController.m
  72. 2
      LekangGuard/Protection(守护星)/VC/ms/MyChildViewController.m
  73. 4
      LekangGuard/Protection(守护星)/VC/ms/OtherChildViewController.m
  74. 1
      LekangGuard/Protection(守护星)/VC/ms/SchAndJobMessageViewController.h
  75. 6
      LekangGuard/Protection(守护星)/VC/ms/SchAndJobMessageViewController.m
  76. 18
      LekangGuard/Protection(守护星)/View/MemberListTableViewCell.h
  77. 119
      LekangGuard/Protection(守护星)/View/MemberListTableViewCell.m
  78. 6
      LekangGuard/en.lproj/Localizable.strings
  79. 2
      LekangGuard/zh-Hans.lproj/InfoPlist.strings
  80. 6
      LekangGuard/zh-Hans.lproj/Localizable.strings
  81. 7
      Podfile
  82. 29
      Podfile.lock
  83. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3d_navi_sky_day.data
  84. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_day.data
  85. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_night.data
  86. 112
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3dlandscape.xml
  87. 112
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3dportrait.xml
  88. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_1.png
  89. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_2.png
  90. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_1.png
  91. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_2.png
  92. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_day.png
  93. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_night.png
  94. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_day.png
  95. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_night.png
  96. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_day_bk.data
  97. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_nigth_bk.data
  98. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_day.png
  99. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_night.png
  100. BIN
      Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_main_day.png
  101. Some files were not shown because too many files have changed in this diff Show More

32
LekangGuard.xcodeproj/project.pbxproj

@ -283,6 +283,10 @@ @@ -283,6 +283,10 @@
61B44DDE2946C9460035E1CC /* MarkExplainTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B44DDD2946C9460035E1CC /* MarkExplainTableViewCell.m */; };
61B44DE22946D1A30035E1CC /* ElectronicFenceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B44DE12946D1A30035E1CC /* ElectronicFenceViewController.m */; };
61B44DE72946D27E0035E1CC /* ElectronicFenceTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B44DE62946D27E0035E1CC /* ElectronicFenceTableViewCell.m */; };
61BBF5452A9DC24900BCF091 /* MemberManagementViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61BBF5442A9DC24900BCF091 /* MemberManagementViewController.m */; };
61BBF5482A9DC34B00BCF091 /* MemberListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61BBF5472A9DC34B00BCF091 /* MemberListViewController.m */; };
61BBF54B2A9DC6FE00BCF091 /* MemberListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 61BBF54A2A9DC6FE00BCF091 /* MemberListTableViewCell.m */; };
61BBF54E2A9EDA5000BCF091 /* MoreRailAddressViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 61BBF54D2A9EDA5000BCF091 /* MoreRailAddressViewController.m */; };
61BE99AD295D2A4C00962512 /* RemindModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 61BE99AC295D2A4C00962512 /* RemindModel.m */; };
61BE99B0295D437E00962512 /* AttentionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 61BE99AF295D437E00962512 /* AttentionModel.m */; };
61BE99B3295D686100962512 /* SystermModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 61BE99B2295D686100962512 /* SystermModel.m */; };
@ -999,6 +1003,14 @@ @@ -999,6 +1003,14 @@
61B44DE12946D1A30035E1CC /* ElectronicFenceViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ElectronicFenceViewController.m; sourceTree = "<group>"; };
61B44DE52946D27E0035E1CC /* ElectronicFenceTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ElectronicFenceTableViewCell.h; sourceTree = "<group>"; };
61B44DE62946D27E0035E1CC /* ElectronicFenceTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ElectronicFenceTableViewCell.m; sourceTree = "<group>"; };
61BBF5432A9DC24900BCF091 /* MemberManagementViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemberManagementViewController.h; sourceTree = "<group>"; };
61BBF5442A9DC24900BCF091 /* MemberManagementViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MemberManagementViewController.m; sourceTree = "<group>"; };
61BBF5462A9DC34B00BCF091 /* MemberListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemberListViewController.h; sourceTree = "<group>"; };
61BBF5472A9DC34B00BCF091 /* MemberListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MemberListViewController.m; sourceTree = "<group>"; };
61BBF5492A9DC6FE00BCF091 /* MemberListTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MemberListTableViewCell.h; sourceTree = "<group>"; };
61BBF54A2A9DC6FE00BCF091 /* MemberListTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MemberListTableViewCell.m; sourceTree = "<group>"; };
61BBF54C2A9EDA5000BCF091 /* MoreRailAddressViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MoreRailAddressViewController.h; sourceTree = "<group>"; };
61BBF54D2A9EDA5000BCF091 /* MoreRailAddressViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MoreRailAddressViewController.m; sourceTree = "<group>"; };
61BE99AA295D290500962512 /* Enum.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Enum.h; sourceTree = "<group>"; };
61BE99AB295D2A4C00962512 /* RemindModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemindModel.h; sourceTree = "<group>"; };
61BE99AC295D2A4C00962512 /* RemindModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RemindModel.m; sourceTree = "<group>"; };
@ -1387,6 +1399,12 @@ @@ -1387,6 +1399,12 @@
61B1F7972A95E8F10022E458 /* ProtectionViewController.m */,
61B1F7A92A96F2900022E458 /* DeviceSwitchover.h */,
61B1F7AA2A96F2910022E458 /* DeviceSwitchover.m */,
61BBF5432A9DC24900BCF091 /* MemberManagementViewController.h */,
61BBF5442A9DC24900BCF091 /* MemberManagementViewController.m */,
61BBF5462A9DC34B00BCF091 /* MemberListViewController.h */,
61BBF5472A9DC34B00BCF091 /* MemberListViewController.m */,
61D478D3295C33CC002FC2D4 /* AttentionMessageViewController.h */,
61D478D1295C33CC002FC2D4 /* AttentionMessageViewController.m */,
61B1F7992A95E9C10022E458 /* ms */,
);
path = VC;
@ -1414,6 +1432,8 @@ @@ -1414,6 +1432,8 @@
611551652A3062BA00F451E5 /* CommMessageTableViewCell.m */,
61B1F7B82A972AE10022E458 /* DeviceMsgHeaderView.h */,
61B1F7B92A972AE10022E458 /* DeviceMsgHeaderView.m */,
61BBF5492A9DC6FE00BCF091 /* MemberListTableViewCell.h */,
61BBF54A2A9DC6FE00BCF091 /* MemberListTableViewCell.m */,
);
path = View;
sourceTree = "<group>";
@ -2488,6 +2508,8 @@ @@ -2488,6 +2508,8 @@
618E9D76294723E90038735F /* RailNameTagViewController.m */,
618E9D7B2948267F0038735F /* RailAddressViewController.h */,
618E9D7C2948267F0038735F /* RailAddressViewController.m */,
61BBF54C2A9EDA5000BCF091 /* MoreRailAddressViewController.h */,
61BBF54D2A9EDA5000BCF091 /* MoreRailAddressViewController.m */,
618E9D8129486E560038735F /* RailSearchAddressVC.h */,
618E9D8229486E560038735F /* RailSearchAddressVC.m */,
61B44DE32946D2580035E1CC /* Model */,
@ -2750,8 +2772,6 @@ @@ -2750,8 +2772,6 @@
61D478A9295C30B0002FC2D4 /* MessageViewController.m */,
61D478D0295C33CB002FC2D4 /* RemindMessageViewController.h */,
61D478CF295C33CB002FC2D4 /* RemindMessageViewController.m */,
61D478D3295C33CC002FC2D4 /* AttentionMessageViewController.h */,
61D478D1295C33CC002FC2D4 /* AttentionMessageViewController.m */,
61D478D2295C33CC002FC2D4 /* SystermMessageViewController.h */,
61D478D4295C33CC002FC2D4 /* SystermMessageViewController.m */,
61D478D8295C33DB002FC2D4 /* CallMessageViewController.h */,
@ -3576,6 +3596,7 @@ @@ -3576,6 +3596,7 @@
61CA2BEB293EE0D800605022 /* AddAttendClassAlarmViewController.m in Sources */,
61EDC14629447802003846D8 /* PositionModel.m in Sources */,
61D478D5295C33CC002FC2D4 /* RemindMessageViewController.m in Sources */,
61BBF54E2A9EDA5000BCF091 /* MoreRailAddressViewController.m in Sources */,
61D6D3A12966A53D0010F59C /* JSToastDialogs.m in Sources */,
61D7AA5E2987A12400E982AA /* UIView+ViewController.m in Sources */,
61CA2C08293F33AA00605022 /* EditDeviceViewController.m in Sources */,
@ -3626,6 +3647,7 @@ @@ -3626,6 +3647,7 @@
614F0D18296571F0007A912A /* SECompatibility.m in Sources */,
6172C0022A72465B00B3247F /* MyChildViewController.m in Sources */,
6115514A2A2F163B00F451E5 /* SelectCountryViewController.m in Sources */,
61BBF5482A9DC34B00BCF091 /* MemberListViewController.m in Sources */,
61D7AACF2987A28900E982AA /* QMUIRuntime.m in Sources */,
614F0D0B296571F0007A912A /* FLAnimatedImage.m in Sources */,
61D478CD295C3371002FC2D4 /* DLCustomSlideView.m in Sources */,
@ -3701,6 +3723,7 @@ @@ -3701,6 +3723,7 @@
6175598928DAE1C5008E5954 /* main.m in Sources */,
6133637D28F10C0100BF4A14 /* APIManager.m in Sources */,
611551662A3062BA00F451E5 /* CommMessageTableViewCell.m in Sources */,
61BBF54B2A9DC6FE00BCF091 /* MemberListTableViewCell.m in Sources */,
614F0CE4296571F0007A912A /* XHFileAttribute.m in Sources */,
614F0D0C296571F0007A912A /* FLAnimatedImageView.m in Sources */,
614F0D1C296571F0007A912A /* SETextView.m in Sources */,
@ -3830,6 +3853,7 @@ @@ -3830,6 +3853,7 @@
614F0CE9296571F0007A912A /* XHVideoOutputSampleBufferFactory.m in Sources */,
61B440F42928B4FE00BB9EC7 /* YBPopupMenuPath.m in Sources */,
61AB7A9B28F6C5A800EEAF3F /* AddWatchViewController.m in Sources */,
61BBF5452A9DC24900BCF091 /* MemberManagementViewController.m in Sources */,
61D6D39E2966611F0010F59C /* ChatModel.m in Sources */,
61D6D3BC296AC1410010F59C /* MyUserMsgModel.m in Sources */,
61D7AAD82987A28900E982AA /* UIColor+QMUI.m in Sources */,
@ -4162,7 +4186,7 @@ @@ -4162,7 +4186,7 @@
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = Q4S877C83P;
EXCLUDED_ARCHS = "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64=arm64 arm64e armv7 armv7s armv6 armv8 EXCLUDED_ARCHS=$(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT))\n";
EXCLUDED_ARCHS = "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64=arm64 arm64e armv7 armv7s armv6 armv8 EXCLUDED_ARCHS=$(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT))";
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -4207,6 +4231,7 @@ @@ -4207,6 +4231,7 @@
INFOPLIST_KEY_NSContactsUsageDescription = "请为应用打开通讯录权限,以便使用联系人批量导入功能";
INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "您是否允许APP访问地理位置";
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "请为应用打开定位权限,以便使用地图功能";
INFOPLIST_KEY_NSLocationUsageDescription = "永不允许访问位置信息";
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "请为应用打开定位权限,以便使用地图功能";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "请为APP打开麦克风权限,以便正常使用聊天功能";
INFOPLIST_KEY_NSMotionUsageDescription = "App需要您的同意,才能访问运动与健身";
@ -4295,6 +4320,7 @@ @@ -4295,6 +4320,7 @@
INFOPLIST_KEY_NSContactsUsageDescription = "请为应用打开通讯录权限,以便使用联系人批量导入功能";
INFOPLIST_KEY_NSLocationAlwaysAndWhenInUseUsageDescription = "您是否允许APP访问地理位置";
INFOPLIST_KEY_NSLocationAlwaysUsageDescription = "请为应用打开定位权限,以便使用地图功能";
INFOPLIST_KEY_NSLocationUsageDescription = "永不允许访问位置信息";
INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "请为应用打开定位权限,以便使用地图功能";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "请为APP打开麦克风权限,以便正常使用聊天功能";
INFOPLIST_KEY_NSMotionUsageDescription = "App需要您的同意,才能访问运动与健身";

2
LekangGuard.xcodeproj/xcuserdata/ecell.xcuserdatad/xcschemes/xcschememanagement.plist

@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
<key>LKNotificationSerExtension.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>38</integer>
<integer>40</integer>
</dict>
<key>LekangGuard.xcscheme_^#shared#^_</key>
<dict>

BIN
LekangGuard.xcworkspace/xcuserdata/ecell.xcuserdatad/UserInterfaceState.xcuserstate generated

Binary file not shown.

56
LekangGuard.xcworkspace/xcuserdata/ecell.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@ -462,8 +462,8 @@ @@ -462,8 +462,8 @@
filePath = "LekangGuard/Login/RegisterViewController.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "258"
endingLineNumber = "258"
startingLineNumber = "261"
endingLineNumber = "261"
landmarkName = "-UserRegister"
landmarkType = "7">
</BreakpointContent>
@ -478,11 +478,59 @@ @@ -478,11 +478,59 @@
filePath = "LekangGuard/AppDelegate.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "106"
endingLineNumber = "106"
startingLineNumber = "107"
endingLineNumber = "107"
landmarkName = "-pushRegistry:didReceiveIncomingPushWithPayload:forType:"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D9E08C44-0A61-4DF4-BA5D-B02D9E7698A9"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "LekangGuard/My/Message(&#x6d88;&#x606f;)/RemindMessageViewController.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "284"
endingLineNumber = "284"
landmarkName = "-updateRemind:"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "D343C746-96BF-4E07-A985-2C7B3BACAFA8"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "LekangGuard/My/Message(&#x6d88;&#x606f;)/RemindMessageViewController.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "288"
endingLineNumber = "288"
landmarkName = "-updateRemind:"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "40251BFA-978B-4247-8F47-34E947EF01E7"
shouldBeEnabled = "Yes"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "LekangGuard/My/Message(&#x6d88;&#x606f;)/MessageViewController.m"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "123"
endingLineNumber = "123"
landmarkName = "-GetUnReadTotal"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

24
LekangGuard/AppDelegate.m

@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
#import "MessageViewController.h"
#import "ReadFlowerViewController.h"
#import "SchAndJobMessageViewController.h"
#import "MemberManagementViewController.h"
#define kMusicTime 20
#define videoTimerCount 3
@ -360,13 +361,26 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response @@ -360,13 +361,26 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response
if([msgType isEqualToString:@"checkResults"]
|| [msgType isEqualToString:@"checkedResults"]
|| [msgType isEqualToString:@"applicationRrecord"]
|| [msgType isEqualToString:@"applicationOvertime"]){
selectIndex = 1;
|| [msgType isEqualToString:@"applicationOvertime"])
{
/// 关注消息需要前往成员管理查看
if ([navVC.visibleViewController isKindOfClass:[MemberManagementViewController class]])
{
UIViewController *viewController = navVC.viewControllers.lastObject;
MemberManagementViewController *tempVC = (MemberManagementViewController*)viewController;
tempVC.selectedIndex = 1;
}
else
{
MemberManagementViewController *vc = [MemberManagementViewController new];
vc.selectedIndex = 1;
[[UICommon currentVC].navigationController pushViewController:vc animated:YES];
}
}
if([msgType isEqualToString:@"identityTransfer"]
|| [msgType isEqualToString:@"identityTransfered"]
|| [msgType isEqualToString:@"systemUpdate"]){
selectIndex = 2;
selectIndex = 1;
}
if([msgType isEqualToString:@"CostFlow"]){
selectIndex = 3;
@ -383,11 +397,7 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response @@ -383,11 +397,7 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response
if(selectIndex == 0)
[tempVC updataRemindMessage];
else if (selectIndex == 1)
[tempVC applicationRrecord];
else if (selectIndex == 2)
[tempVC updateAllMessage];
else
[tempVC updataCallMessage];
}
else
{

21
LekangGuard/Assets.xcassets/Common/comm_selectBtn_Normal.imageset/Contents.json vendored

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "comm_selectBtn_Normal@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

BIN
LekangGuard/Assets.xcassets/Common/comm_selectBtn_Normal.imageset/comm_selectBtn_Normal@2x.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

21
LekangGuard/Assets.xcassets/Common/comm_selectBtn_Select.imageset/Contents.json vendored

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "comm_selectBtn_Select@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

BIN
LekangGuard/Assets.xcassets/Common/comm_selectBtn_Select.imageset/comm_selectBtn_Select@2x.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

21
LekangGuard/Assets.xcassets/Map/map_weilan_select.imageset/Contents.json vendored

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "map_weilan_select@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

BIN
LekangGuard/Assets.xcassets/Map/map_weilan_select.imageset/map_weilan_select@2x.png vendored

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

BIN
LekangGuard/Assets.xcassets/启动图/q-en-1.imageset/q-en-1@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 749 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-en-1.imageset/q-en-1@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 786 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-en-2.imageset/q-en-2@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 782 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-en-2.imageset/q-en-2@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 840 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-en-3.imageset/q-en-3@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 834 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-en-3.imageset/q-en-3@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 KiB

After

Width:  |  Height:  |  Size: 910 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-en-4.imageset/q-en-4@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 297 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
LekangGuard/Assets.xcassets/启动图/q-en-4.imageset/q-en-4@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 301 KiB

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-1.imageset/q-zh-1@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

After

Width:  |  Height:  |  Size: 741 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-1.imageset/q-zh-1@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 KiB

After

Width:  |  Height:  |  Size: 776 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-2.imageset/q-zh-2@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 KiB

After

Width:  |  Height:  |  Size: 756 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-2.imageset/q-zh-2@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 814 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-3.imageset/q-zh-3@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 KiB

After

Width:  |  Height:  |  Size: 816 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-3.imageset/q-zh-3@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 KiB

After

Width:  |  Height:  |  Size: 894 KiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-4.imageset/q-zh-4@2x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
LekangGuard/Assets.xcassets/启动图/q-zh-4.imageset/q-zh-4@3x.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

2
LekangGuard/Common/Const.h

@ -51,7 +51,7 @@ @@ -51,7 +51,7 @@
//高德地图 Key
#define AMapKey @"9718a5f1e68018d744c320336d0c6571"
#define AMapKey @"cc2e8880f53e768cc84c374f403ef4d4"
#define GJText(x) NSLocalizedString(x, nil)

8
LekangGuard/Common/UICommon.m

@ -507,6 +507,8 @@ @@ -507,6 +507,8 @@
+ (NSAttributedString *)labelFontSize:(NSString *)text
{
NSRange symbolRange = [text rangeOfString:GJText(@"条轨迹")];
NSRange symbolRange1 = [text rangeOfString:GJText(@"多边形围栏")];
NSRange symbolRange2 = [text rangeOfString:GJText(@"圆形围栏")];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:text];
@ -514,6 +516,12 @@ @@ -514,6 +516,12 @@
[string addAttribute:NSFontAttributeName value:FontADA_(13) range:NSMakeRange(symbolRange.location, symbolRange.length)];
[string addAttribute:NSForegroundColorAttributeName value:KKGrey121 range:NSMakeRange(symbolRange.location, symbolRange.length)];
}
if (symbolRange1.location != NSNotFound) {
[string addAttribute:NSForegroundColorAttributeName value:KKMainColor range:NSMakeRange(symbolRange1.location, symbolRange1.length)];
}
if (symbolRange2.location != NSNotFound) {
[string addAttribute:NSForegroundColorAttributeName value:KKMainColor range:NSMakeRange(symbolRange2.location, symbolRange2.length)];
}
// if (xingRange.location != NSNotFound) {
// [string addAttribute:NSFontAttributeName value:FontADA_(11) range:NSMakeRange(xingRange.location, xingRange.length)];
// [string addAttribute:NSForegroundColorAttributeName value:KKTextRedColor range:NSMakeRange(xingRange.location, xingRange.length)];

2
LekangGuard/Common/tabBar/TabBarViewController.m

@ -154,7 +154,7 @@ @@ -154,7 +154,7 @@
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
UINavigationController *selectNav = (UINavigationController*)viewController;
if (APIManager.sharedManager.deviceModel.imei.length <= 0 && [NSStringFromClass([selectNav.topViewController class]) isEqualToString:@"MapViewController"])
if ((APIManager.sharedManager.deviceModel.imei.length <= 0 && [NSStringFromClass([selectNav.topViewController class]) isEqualToString:@"MapViewController"]) || (APIManager.sharedManager.deviceModel.imei.length <= 0 && [NSStringFromClass([selectNav.topViewController class]) isEqualToString:@"ProtectionViewController"]))
{
self.selectedIndex = 0;
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"提示") subtitle:GJText(@"您还未绑定设备,请先绑定设备!") AlertViewType:AlertViewTypeSystemAlert config:nil];

5
LekangGuard/Home/Contacts(电话本)/ChoosePersonAddressVC.h

@ -13,6 +13,11 @@ NS_ASSUME_NONNULL_BEGIN @@ -13,6 +13,11 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic ,strong) void(^isAddSucceed)(void);
/// 是否是亲情号进入
@property (nonatomic ,assign) BOOL isAddFamily;
@property (nonatomic ,strong) void(^isAddFamilySucceed)(NSString *name, NSString *phone);
@end
NS_ASSUME_NONNULL_END

42
LekangGuard/Home/Contacts(电话本)/ChoosePersonAddressVC.m

@ -32,9 +32,12 @@ @@ -32,9 +32,12 @@
make.bottom.equalTo(self.view.mas_bottom);
}];
[self zx_setRightBtnWithText:GJText(@"提交") clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
[self saveAction];
}];
if (!self.isAddFamily)
{
[self zx_setRightBtnWithText:GJText(@"提交") clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
[self saveAction];
}];
}
[self initData];
}
@ -194,6 +197,7 @@ @@ -194,6 +197,7 @@
NSArray<PPPersonModel*> *arr = self.dataSouce[self.nameKeys[indexPath.section]];
PPPersonModel *model = arr[indexPath.row];
cell.perModel = model;
cell.isAddFamily = self.isAddFamily;
return cell;
}
@ -209,20 +213,28 @@ @@ -209,20 +213,28 @@
NSMutableArray<PPPersonModel*> *Marr = [NSMutableArray arrayWithArray:self.dataSouce[self.nameKeys[indexPath.section]]];
PPPersonModel * model = Marr[indexPath.row];
if (model.mobileArray.count == 0)
if (!self.isAddFamily)
{
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:GJText(@"添加的通讯录号码不能为空") message:@"" style:LGAlertViewStyleAlert buttonTitles:@[GJText(@"确定")] cancelButtonTitle:nil destructiveButtonTitle:nil actionHandler:^(LGAlertView * _Nonnull alertView, NSUInteger index, NSString * _Nullable title) {
} cancelHandler:^(LGAlertView * _Nonnull alertView) {
} destructiveHandler:^(LGAlertView * _Nonnull alertView) {
}];
[alertView showAnimated:YES completionHandler:nil];
return;
if (model.mobileArray.count == 0)
{
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:GJText(@"添加的通讯录号码不能为空") message:@"" style:LGAlertViewStyleAlert buttonTitles:@[GJText(@"确定")] cancelButtonTitle:nil destructiveButtonTitle:nil actionHandler:^(LGAlertView * _Nonnull alertView, NSUInteger index, NSString * _Nullable title) {
} cancelHandler:^(LGAlertView * _Nonnull alertView) {
} destructiveHandler:^(LGAlertView * _Nonnull alertView) {
}];
[alertView showAnimated:YES completionHandler:nil];
return;
}
model.isSelect = !model.isSelect;
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}
else
{
self.isAddFamilySucceed(model.name, model.mobileArray[0]);
[self.navigationController popViewControllerAnimated:YES];
}
model.isSelect = !model.isSelect;
[tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];
}

2
LekangGuard/Home/Contacts(电话本)/ContactsViewController.m

@ -228,7 +228,7 @@ @@ -228,7 +228,7 @@
return [EasyAlertItem itemWithTitle:GJText(@"取消") type:AlertItemTypeSystemCancel callback:nil];
}];
[alertV addAlertItemWithTitle:GJText(@"删除") type:AlertItemTypeSystemDestructive callback:^(EasyAlertView *showview, long index) {
[weakself deleteContactFuntionWith:@[contacts.Id]];
}];
if(contacts.identity != 2 && contacts.openId)
{

2
LekangGuard/Home/Contacts(电话本)/View/ChooseContactTableViewCell.h

@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN @@ -15,6 +15,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic ,strong) PPPersonModel *perModel;
@property (nonatomic ,assign) BOOL isAddFamily;
@end
NS_ASSUME_NONNULL_END

13
LekangGuard/Home/Contacts(电话本)/View/ChooseContactTableViewCell.m

@ -54,6 +54,19 @@ @@ -54,6 +54,19 @@
self.selectImg.image = perModel.isSelect ? ImageName_(@"icon_selectImg_Yes") : ImageName_(@"icon_selectImg_No");
}
- (void)setIsAddFamily:(BOOL)isAddFamily
{
_isAddFamily = isAddFamily;
self.selectImg.hidden = isAddFamily;
[self.nameLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
if (isAddFamily)
make.left.equalTo(self.contentView).offset(15);
else
make.left.equalTo(self.selectImg.mas_right).offset(10);
make.centerY.equalTo(self.contentView);
}];
}
- (void)subCellView
{
UIImageView *selectImg = [UICommon ui_imageView:CGRectZero fileName:@"icon_selectImg_No"];

9
LekangGuard/Home/Family(亲情号)/AddFamilyNumberViewController.m

@ -92,7 +92,10 @@ @@ -92,7 +92,10 @@
{
UIButton *tongBtn = [UICommon ui_buttonSimple:CGRectZero font:Font_(0) normalColor:KKWhiteColorColor normalText:@"" click:^(id x) {
ChoosePersonAddressVC *vc = [ChoosePersonAddressVC new];
vc.isAddSucceed = ^{
vc.isAddFamily = YES;
vc.isAddFamilySucceed = ^(NSString * _Nonnull name, NSString * _Nonnull phone) {
self.nameField.text = name;
self.phoneField.text = phone;
};
[self.navigationController pushViewController:vc animated:YES];
}];
@ -129,7 +132,7 @@ @@ -129,7 +132,7 @@
NSArray *titleArr = @[@"快捷键 1",@"快捷键 2",@"快捷键 3",@"快捷键 4"];
NSArray *titleArr = @[@"快捷键 1",@"快捷键 2",@"快捷键 3"];
UIView *bgView1 = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:8 borderWidth:0 borderColor:KKClearColor];
bgView1.frame = CGRectMake(120, bgView.bottom-20, 118, 0);
@ -185,7 +188,7 @@ @@ -185,7 +188,7 @@
delay:0.0f
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.bgView1.size = CGSizeMake(self.bgView1.width, 4*Adapted(40)+3*1);
self.bgView1.size = CGSizeMake(self.bgView1.width, 3*Adapted(40)+3*1);
}
completion:^(BOOL finished) {
for (UIButton *btn in self.btnArr) {

2
LekangGuard/Home/Family(亲情号)/View/FamilyNumberTableViewCell.m

@ -47,7 +47,7 @@ @@ -47,7 +47,7 @@
- (void)subCellView
{
UIImageView *iconImg = [UICommon ui_imageView:CGRectZero fileName:@"icon_home_phone_book"];
UIImageView *iconImg = [UICommon ui_imageView:CGRectZero fileName:@"icon_user"];
self.iconImg = iconImg;
[self.contentView addSubview:iconImg];
[iconImg mas_makeConstraints:^(MASConstraintMaker *make) {

18
LekangGuard/Home/Homes/HomeViewController.m

@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = KKBackgroundGrey;
self.zx_navStatusBarStyle = ZXNavStatusBarStyleDefault;
self.zx_navLeftBtn.titleLabel.font = FontBoldADA_(18);
[self.zx_navLeftBtn setTitleColor:KKWhiteColorColor forState:0];
@ -47,17 +47,17 @@ @@ -47,17 +47,17 @@
self.buttonTitle = GJText(@"添加设备");
self.buttonImg = ImageName_(@"home_addBtn");
[self.view addSubview:bgImg];
self.zx_navRightBtn.zx_fixImageSize = ImageName_(@"home_icon_add").size;
self.zx_navRightBtn.zx_fixWidth = 40;
self.zx_navRightBtn.zx_fixHeight = 40;
// [self.view addSubview:bgImg];
// self.zx_navRightBtn.zx_fixImageSize = ImageName_(@"home_icon_add").size;
// self.zx_navRightBtn.zx_fixWidth = 40;
// self.zx_navRightBtn.zx_fixHeight = 40;
[self zx_setRightBtnWithImg:ImageName_(@"home_icon_add") clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
[self isShowMenu];
}];
[self zx_setSubRightBtnWithImgName:@"home_nav_sign" clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
// SingViewController *vc = [[SingViewController alloc] init];
// [self.navigationController pushViewController:vc animated:YES];
}];
// [self zx_setSubRightBtnWithImgName:@"home_nav_sign" clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
//// SingViewController *vc = [[SingViewController alloc] init];
//// [self.navigationController pushViewController:vc animated:YES];
// }];
[self setTotal];
[self QueryMsg];
[self GetBannerList];

13
LekangGuard/Home/Homes/View/HomeHeaderView.m

@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
#import "ChatViewController.h"
#import "VideoChatViewController.h"
#import "ReadFlowerViewController.h"
#import "SchAndJobMessageViewController.h"
@interface HomeHeaderView ()
@ -43,6 +43,8 @@ @@ -43,6 +43,8 @@
@property (nonatomic ,strong) NSMutableArray *btnArr;
@property (nonatomic ,weak) UILabel *titleLabel;
@property (nonatomic ,weak) UILabel *titleLabel1;
@end
@implementation HomeHeaderView
@ -113,6 +115,8 @@ @@ -113,6 +115,8 @@
_isDev = isDev;
self.msgView.hidden = isDev;
self.btnView.hidden = isDev;
self.titleLabel.hidden = isDev;
self.titleLabel1.hidden = isDev;
}
- (void)subHeaderView
@ -130,6 +134,7 @@ @@ -130,6 +134,7 @@
[self addSubview:bannerView];
UILabel *titleLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontBold_(14) textColor:KKTextBlackColor text:@"设备信息" Radius:0];
self.titleLabel = titleLabel;
[self addSubview:titleLabel];
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self).offset(10);
@ -145,6 +150,7 @@ @@ -145,6 +150,7 @@
}];
UILabel *titleLabel1 = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontBold_(14) textColor:KKTextBlackColor text:@"常用功能" Radius:0];
self.titleLabel1 = titleLabel1;
[self addSubview:titleLabel1];
[titleLabel1 mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(titleLabel);
@ -211,7 +217,10 @@ @@ -211,7 +217,10 @@
}
else if ([btn.currentTitle isEqualToString:GJText(@"班级作业")])
{
SchAndJobMessageViewController *vc = [[SchAndJobMessageViewController alloc] init];
vc.navTitle = @"班级作业";
vc.viewType = 1;
[[UICommon currentVC].navigationController pushViewController:vc animated:YES];
}
else if ([btn.currentTitle isEqualToString:GJText(@"小红花")])
{

6
LekangGuard/Home/MoreService (更多功能)/View/FunctionView.m

@ -15,6 +15,7 @@ @@ -15,6 +15,7 @@
#import "StepViewController.h"
#import "TimingViewController.h"
#import "VideoChatViewController.h"
#import "MemberManagementViewController.h"
@interface FunctionView ()<WSLWaterFlowLayoutDelegate,UICollectionViewDelegate,UICollectionViewDataSource>
@ -153,6 +154,11 @@ @@ -153,6 +154,11 @@
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:string] options:@{} completionHandler:nil];
}
}
if ([title isEqualToString:@"成员管理"])
{
MemberManagementViewController *vc = [[MemberManagementViewController alloc] init];
[[UICommon currentVC].navigationController pushViewController:vc animated:YES];
}
if ([title isEqualToString:GJText(@"电话本")] || [title isEqualToString:GJText(@"管理员")])
{
ContactsViewController *vc = [ContactsViewController new];

4
LekangGuard/Home/VideoChat(视频聊天)/1v1/JuPhoonCallViewController.m

@ -194,7 +194,7 @@ @@ -194,7 +194,7 @@
-(void)showAlertAuthorizationTypeVideo
{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许智慧校园访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许守护星访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
@ -205,7 +205,7 @@ @@ -205,7 +205,7 @@
- (void)showAlertAuthorizationTypeCamera
{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"在iPhone的\"设置-隐私-相机\"选项中,允许智慧校园访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"在iPhone的\"设置-隐私-相机\"选项中,允许守护星访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

4
LekangGuard/Home/VideoChat(视频聊天)/Bairui/VideoViewController.m

@ -132,7 +132,7 @@ @@ -132,7 +132,7 @@
- (void)showAlertAuthorizationTypeVideo
{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许智慧校园访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许守护星访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
@ -143,7 +143,7 @@ @@ -143,7 +143,7 @@
- (void)showAlertAuthorizationTypeCamera
{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"在iPhone的\"设置-隐私-相机\"选项中,允许智慧校园访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"在iPhone的\"设置-隐私-相机\"选项中,允许守护星访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

4
LekangGuard/Home/VideoChat(视频聊天)/VideoChatViewController.m

@ -250,7 +250,7 @@ @@ -250,7 +250,7 @@
[weakself videoActionFunction];
}
unAuthorizedHandler:^{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许智慧校园访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许守护星访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:nil];
}];
@ -260,7 +260,7 @@ @@ -260,7 +260,7 @@
[jlManager JL_requestAuthorizationWithAuthorizationType:JLAuthorizationTypeCamera
authorizedHandler:nil
unAuthorizedHandler:^{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-相机\"选项中,允许智慧校园访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-相机\"选项中,允许守护星访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:nil];
}];

4
LekangGuard/Home/VideoChat(视频聊天)/tihu/TihuVideoCallViewController.m

@ -165,7 +165,7 @@ static CGFloat const kBtnHeitht = 106; @@ -165,7 +165,7 @@ static CGFloat const kBtnHeitht = 106;
- (void)showAlertAuthorizationTypeVideo
{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许智慧校园访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"请在iPhone的\"设置-隐私-麦克风\"选项中,允许守护星访问你的麦克风") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
@ -176,7 +176,7 @@ static CGFloat const kBtnHeitht = 106; @@ -176,7 +176,7 @@ static CGFloat const kBtnHeitht = 106;
- (void)showAlertAuthorizationTypeCamera
{
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"在iPhone的\"设置-隐私-相机\"选项中,允许智慧校园访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"在iPhone的\"设置-隐私-相机\"选项中,允许守护星访问你的相机") subtitle:nil AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
//[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

1
LekangGuard/Info.plist

@ -36,6 +36,7 @@ @@ -36,6 +36,7 @@
<array>
<string>audio</string>
<string>fetch</string>
<string>location</string>
<string>remote-notification</string>
</array>
</dict>

BIN
LekangGuard/LaunchScreenImg@2x.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 KiB

After

Width:  |  Height:  |  Size: 650 KiB

BIN
LekangGuard/LaunchScreenImg@3x.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

After

Width:  |  Height:  |  Size: 648 KiB

5
LekangGuard/LekangGuard.pch

@ -35,8 +35,11 @@ @@ -35,8 +35,11 @@
//高德SDK
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <AMapSearchKit/AMapSearchKit.h>
#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
#import <AMapLocationKit/AMapLocationKit.h>
#import <GoogleMaps/GoogleMaps.h>
#import <GooglePlaces/GooglePlaces.h>

5
LekangGuard/Login/LoginViewController.m

@ -231,7 +231,10 @@ @@ -231,7 +231,10 @@
}
else
{
RegisterViewController *vc = [RegisterViewController new];
vc.navTitle = @"验证码登录";
vc.isViewType = 3;
[self.navigationController pushViewController:vc animated:YES];
}
}];
btn.size = CGSizeMake(50, 75);

2
LekangGuard/Login/RegisterViewController.h

@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface RegisterViewController : BaseViewController
/// 页面区分,0:注册,1:忘记密码 2 :首次微信登录,未绑定个手机号
/// 页面区分,0:注册,1:忘记密码 2 :首次微信登录,未绑定个手机号 3:验证码登录
@property (nonatomic ,assign) NSInteger isViewType;
@property (nonatomic ,strong) NSString *navTitle;

129
LekangGuard/Login/RegisterViewController.m

@ -61,6 +61,11 @@ @@ -61,6 +61,11 @@
GJText(@"请输入验证码"),
GJText(@"请输入6~16个字符"),
GJText(@"请输入6~16个字符")];
if (self.isViewType == 3)
{
titleArr = @[GJText(@"手机号"),GJText(@"验证码")];
placeholderArr = @[GJText(@"请输入手机号"),GJText(@"请输入验证码"),];
}
for (int i = 0; i < titleArr.count; i++)
{
@ -145,17 +150,23 @@ @@ -145,17 +150,23 @@
/// 注册
kWeakSelf(self)
UIButton *registerBtn = [UICommon ui_buttonSimple:CGRectZero font:FontADA_(15) normalColor:KKWhiteColorColor normalText:NSLocalizedString(self.isViewType == 0 ? GJText(@"注册") : self.isViewType == 1 ? GJText(@"重置密码") : GJText(@"确定"),nil) click:^(id x) {
[self UserRegister];
NSString *btnTitle = @"";
if (self.isViewType == 0)btnTitle = @"注册";
else if (self.isViewType == 1)btnTitle = @"重置密码";
else if (self.isViewType == 2)btnTitle = @"确定";
else if (self.isViewType == 3)btnTitle = @"登录";
UIButton *registerBtn = [UICommon ui_buttonSimple:CGRectZero font:FontADA_(15) normalColor:KKWhiteColorColor normalText:btnTitle click:^(id x) {
[weakself UserRegister];
}];
registerBtn.backgroundColor = RGB(255, 173, 1);
registerBtn.backgroundColor = KKMainColor;
registerBtn.tintColor = KKMainColor;
registerBtn.layer.cornerRadius = 5;
registerBtn.layer.cornerRadius = Adapted(22);
registerBtn.layer.masksToBounds = YES;
self.registerBtn = registerBtn;
[self.view addSubview:registerBtn];
[registerBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.passView.mas_bottom).inset(Adapted(15));
make.top.equalTo(self.passView.mas_bottom).inset(Adapted(25));
make.left.right.equalTo(self.view).inset(Adapted(20));
make.height.mas_equalTo(Adapted(44));
}];
@ -210,44 +221,36 @@ @@ -210,44 +221,36 @@
[UICommon MessageErrorText:@"请输入手机号"];
return;
}
else if (self.passField.text.length < 6 || self.passField.text.length > 16)
{
[UICommon MessageErrorText:@"密码应该为6-16位数"];
return;
}
else if (self.passIField.text.length < 6 || self.passIField.text.length > 16)
{
[UICommon MessageErrorText:@"密码应该为6-16位数"];
return;
}
else if (![self.passField.text isEqualToString:self.passIField.text])
{
[UICommon MessageErrorText:@"输入密码不一致"];
return;
}
else if (self.codeField.text.length <= 1)
{
[UICommon MessageErrorText:@"请输入验证码"];
return;
}
if (self.isViewType != 3)
{
if (self.passField.text.length < 6 || self.passField.text.length > 16)
{
[UICommon MessageErrorText:@"密码应该为6-16位数"];
return;
}
else if (self.passIField.text.length < 6 || self.passIField.text.length > 16)
{
[UICommon MessageErrorText:@"密码应该为6-16位数"];
return;
}
else if (![self.passField.text isEqualToString:self.passIField.text])
{
[UICommon MessageErrorText:@"输入密码不一致"];
return;
}
}
self.registerBtn.enabled = NO;
[UICommon MessageUpload:@"加载中"];
if (self.isViewType != 2)
if (self.isViewType == 0 || self.isViewType == 1)
{
// [SMSSDK commitVerificationCode:weakSelf.codeField.text phoneNumber:weakSelf.emailField.text zone:@"86" result:^(NSError *error) {
// if (!error)
// {
// [self UserRegisterUp];
// } else
// {
// [UICommon HidenLoading];
// [UICommon MessageErrorText:@"验证码验证失败"];
// self.registerBtn.enabled = YES;
// }
// }];
[self UserRegisterUp];
}
else
else if (self.isViewType == 2 )
{
NSMutableDictionary *parameters = self.authInfo;
[parameters setValue:self.emailField.text forKey:@"phone"];
@ -256,11 +259,11 @@ @@ -256,11 +259,11 @@
[[[APIManager sharedManager] APPOST:WechatLogin_URL parameters:parameters isJson:YES resultClass:LoginModel.class] subscribeNext:^(id _Nullable x) {
[UICommon HidenLoading];
NSMutableDictionary *userDic = [NSMutableDictionary dictionary];
[userDic setValue:self.emailField.text forKey:@"phone"];
[userDic setValue:self.passIField.text forKey:@"password"];
[userDic setValue:weakSelf.emailField.text forKey:@"phone"];
[userDic setValue:weakSelf.passIField.text forKey:@"password"];
[userDic setValue:@"1" forKey:@"isRememberPWD"];
[userDic setValue:self.countryCodeLabel.text forKey:@"code"];
[userDic setValue:self.countryTitleLabel.text forKey:@"gj"];
[userDic setValue:weakSelf.countryCodeLabel.text forKey:@"code"];
[userDic setValue:weakSelf.countryTitleLabel.text forKey:@"gj"];
YYCache *userCache = [YYCache cacheWithName:UserCacheName];
[userCache setObject:userDic forKey:UserCacheKey];
@ -272,6 +275,10 @@ @@ -272,6 +275,10 @@
[UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]];
}];
}
else if (self.isViewType == 3)
{
[self AuthCodeLigin];
}
}
/// 注册/忘记密码
@ -328,20 +335,38 @@ @@ -328,20 +335,38 @@
NSDictionary *dic = error.userInfo;
[UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]];
}];
// [SMSSDK getVerificationCodeByMethod:SMSGetCodeMethodSMS phoneNumber:self.emailField.text zone:@"86" template:@"" result:^(NSError *error) {
// [UICommon HidenLoading];
// if (!error)
// {
// [UICommon MessageSuccessText:@"获取验证码成功"];
// [self timeOutCount];
// }
// else
// {
// NSDictionary *dic = error.userInfo;
// [UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]];
// }
// }];
}
#pragma mark 验证码登录
/// 验证码登录
- (void)AuthCodeLigin
{
WeakSelf
[UICommon MessageUpload:@"登录中"];
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setValue:self.codeField.text forKey:@"code"];
[parameters setValue:self.emailField.text forKey:@"phone"];
[[[APIManager sharedManager] APPOST:AuthCodeLigin_URL parameters:parameters isJson:YES resultClass:nil] subscribeNext:^(id _Nullable x) {
[UICommon HidenLoading];
self.registerBtn.enabled = YES;
NSMutableDictionary *userDic = [NSMutableDictionary dictionary];
[userDic setValue:weakSelf.emailField.text forKey:@"phone"];
[userDic setValue:@"" forKey:@"password"];
[userDic setValue:@"1" forKey:@"isRememberPWD"];
[userDic setValue:@"" forKey:@"code"];
[userDic setValue:weakSelf.countryTitleLabel.text forKey:@"gj"];
YYCache *userCache = [YYCache cacheWithName:UserCacheName];
[userCache setObject:userDic forKey:UserCacheKey];
AppDelegate *app = (AppDelegate *)[UIApplication sharedApplication].delegate;
[app showRootViewController];
} error:^(NSError * _Nullable error) {
self.registerBtn.enabled = YES;
NSDictionary *dic = error.userInfo;
[UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]];
}];
}
@ -439,8 +464,6 @@ @@ -439,8 +464,6 @@
make.centerY.equalTo(_countryBtn);
make.right.equalTo(rightImg.mas_left).inset(10);
}];
}
return _countryBtn;
}

17
LekangGuard/Managers/UIURL.h

@ -28,6 +28,9 @@ @@ -28,6 +28,9 @@
/// 微信免密登入-微信登入-微信对接
#define WechatLogin_URL @"/user/wechat/login"
/// 验证码登录
#define AuthCodeLigin_URL @"/user/authCode/login"
#pragma mark -----------------------------------绑定设备模块-----------------------------------
@ -136,7 +139,7 @@ @@ -136,7 +139,7 @@
#define QueryWeekStep_URL @"/device-step-daily/query/weekStep"
/// 查询今日计步数
#define QueryCurrentStep_URL @"/device-step-daily/setGoalNumberOfSteps"
#define QueryCurrentStep_URL @"/device-step-daily/query/currentStep"
/// 拨号盘开关
#define DeviceDialSwitch_URL @"/device-owner-info-app/device/dialSwitch"
@ -161,10 +164,10 @@ @@ -161,10 +164,10 @@
/// 根据imei号查询安全围栏信息
#define QueryRails_URL @"/safety-rail-app/query/queryRails"
/// 新增围栏
/// 新增圆形围栏
#define AddRails_URL @"/safety-rail-app/insert/addRails"
/// 更新电子围栏
/// 更新圆形电子围栏
#define UpdateRails_URL @"/safety-rail-app/update/updateRails"
/// 删除电子围栏
@ -179,6 +182,12 @@ @@ -179,6 +182,12 @@
/// 根据日期删除轨迹信息
#define DeleteTrackInfo_URL @"/track-info-app/delete/trackInfo"
/// 新增多边形围栏
#define AddRails2Polygon_URL @"/safety-rail-app/insert/addRails2Polygon"
/// 跟新多边形围栏
#define UpdateRails2Polygon_URL @"/safety-rail-app/update/updateRails2Polygon"
#pragma mark -----------------------------------消息中心-----------------------------------
@ -189,7 +198,7 @@ @@ -189,7 +198,7 @@
#define DeleteRemind_URL @"/reminder-message-app/delete/deleteRemind"
/// 修改已读/未读状态
#define UpdateRemind_URL @"/reminder-message-app/update/updateRemind"
#define UpdateRemind_URL @"/notify_app/update/updateNotify"
/// 查询通知信息

228
LekangGuard/Map/Fence(电子围栏)/AddRailViewController.m

@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
#import "AddRailViewController.h"
#import "RailNameTagViewController.h"
#import "RailAddressViewController.h"
#import "MoreRailAddressViewController.h"
@interface AddRailViewController ()
@ -26,6 +27,12 @@ @@ -26,6 +27,12 @@
@property (nonatomic ,strong) NSMutableArray *btnArr;
@property (nonatomic ,weak) UIButton *duoBtn;
@property (nonatomic ,weak) UIButton *yuanBtn;
/// 围栏类型
@property (nonatomic ,assign) NSInteger railType;
@end
@implementation AddRailViewController
@ -36,7 +43,12 @@ @@ -36,7 +43,12 @@
self.zx_navTitle = self.isRedact == 1 ? GJText(@"添加电子围栏") : GJText(@"编辑电子围栏");
if (self.isRedact == 1)
{
self.railType = 1;
self.railModel = [[SafetyRailModel alloc] init];
}
else
self.railType = self.railModel.type;
[self zx_setRightBtnWithText:GJText(@"保存") clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
[self AddRails];
@ -44,7 +56,7 @@ @@ -44,7 +56,7 @@
kWeakSelf(self)
NSArray *arr = @[GJText(@"地址名称"),GJText(@"地址"),GJText(@"有效时间"),GJText(@"星期")];
NSArray *arr = @[GJText(@"围栏类型"),GJText(@"地址名称"),GJText(@"地址"),GJText(@"有效时间"),GJText(@"星期")];
NSArray *timeArr = @[GJText(@"一"),GJText(@"二"),GJText(@"三"),GJText(@"四"),GJText(@"五"),GJText(@"六"),GJText(@"日")];
UIView *bgView = [UICommon ui_view:CGRectMake(0, iPhoneX_NavHeight, SCREEN_WIDTH, Adapted(55)*arr.count) backgroundColor:KKWhiteColorColor cornerRadius:0 borderWidth:0 borderColor:KKWhiteColorColor];
@ -59,63 +71,129 @@ @@ -59,63 +71,129 @@
make.top.equalTo(bgView).offset(i*Adapted(55));
make.height.mas_equalTo(Adapted(55));
}];
if (i < 2)
{
UIImageView *rightImg = [UICommon ui_imageView:CGRectZero fileName:@"icon_enter_gray"];
[bgView addSubview:rightImg];
[rightImg mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(bgView.mas_right).inset(15);
make.centerY.equalTo(titleLabel);
make.size.mas_equalTo(CGSizeMake(Adapted(rightImg.image.size.width), Adapted(rightImg.image.size.height)));
}];
NSString *text;
if (i == 0)
text = self.isRedact == 1 ? GJText(@"请设置地址名称") : self.railModel.name;
else
text = self.isRedact == 1 ? GJText(@"请设置详细地址") : self.railModel.address;
UIButton *rightBtn = [UICommon ui_buttonSimple:CGRectZero font:FontADA_(13) normalColor:self.isRedact == 1 ? KKGrey121 : KKTextBlackColor normalText:text click:^(UIButton *btn) {
if (btn.tag == 0)
{
RailNameTagViewController *vc = [RailNameTagViewController new];
vc.addressName = weakself.nameBtn.currentTitle;
vc.isAddressName = ^(NSString * _Nonnull name) {
[weakself.nameBtn setTitle:name forState:0];
self.railModel.name = name;
[weakself.nameBtn setTitleColor:KKTextBlackColor forState:0];
};
[weakself.navigationController pushViewController:vc animated:YES];
}
else
{
RailAddressViewController *vc = [RailAddressViewController new];
vc.railModel = self.railModel;
vc.isRedact = self.isRedact;
vc.isAddressModel = ^(SafetyRailModel * _Nonnull model) {
[weakself.addressBtn setTitle:model.address forState:0];
self.railModel.address = model.address;
self.railModel.lat = model.lat;
self.railModel.lon = model.lon;
self.railModel.radius = model.radius;
[weakself.addressBtn setTitleColor:KKTextBlackColor forState:0];
};
[self.navigationController pushViewController:vc animated:YES];
}
}];
rightBtn.tag = i;
rightBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
if (i == 0) self.nameBtn = rightBtn;
else self.addressBtn = rightBtn;
[bgView addSubview:rightBtn];
[rightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(rightImg.mas_left).inset(5);
make.centerY.equalTo(titleLabel);
make.left.equalTo(bgView).offset(100);
make.height.mas_equalTo(Adapted(48));
}];
}
else if (i == 2)
if (i == 0)
{
if (self.isRedact == 1)
{
UIButton *duoBtn = [UICommon ui_buttonSimple:CGRectZero font:Font_(14) normalColor:KKTextBlackColor normalText:@" 多边形" click:^(UIButton *btn) {
self.railType = 2;
[self selectbtnImg:btn :self.yuanBtn];
}];
self.duoBtn = duoBtn;
[bgView addSubview:duoBtn];
[duoBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(bgView.mas_right).inset(15);
make.centerY.equalTo(titleLabel);
make.size.mas_equalTo(CGSizeMake(80, 40));
}];
UIButton *yuanBtn = [UICommon ui_buttonSimple:CGRectZero font:Font_(14) normalColor:KKTextBlackColor normalText:@" 圆形" click:^(UIButton *btn) {
self.railType = 1;
[self selectbtnImg:btn :self.duoBtn];
}];
self.yuanBtn = yuanBtn;
[bgView addSubview:yuanBtn];
[yuanBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(duoBtn.mas_left).inset(15);
make.centerY.equalTo(titleLabel);
make.size.mas_equalTo(CGSizeMake(80, 40));
}];
if (self.railType == 1)
[self selectbtnImg:self.yuanBtn :self.duoBtn];
else
[self selectbtnImg:self.duoBtn :self.yuanBtn];
}
else
{
UIButton *duoBtn = [UICommon ui_buttonSimple:CGRectZero font:Font_(14) normalColor:KKTextBlackColor normalText:self.railModel.type == 1 ? @" 圆形" : @" 多边形" click:^(UIButton *btn) {
[self selectbtnImg:btn :nil];
}];
[duoBtn setImage:ImageName_(@"comm_selectBtn_Select") forState:UIControlStateNormal];
[bgView addSubview:duoBtn];
[duoBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(bgView.mas_right).inset(15);
make.centerY.equalTo(titleLabel);
make.size.mas_equalTo(CGSizeMake(80, 40));
}];
}
}
else if (i > 0 &&i < 3)
{
UIImageView *rightImg = [UICommon ui_imageView:CGRectZero fileName:@"icon_enter_gray"];
[bgView addSubview:rightImg];
[rightImg mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(bgView.mas_right).inset(15);
make.centerY.equalTo(titleLabel);
make.size.mas_equalTo(CGSizeMake(Adapted(rightImg.image.size.width), Adapted(rightImg.image.size.height)));
}];
NSString *text;
if (i == 1)
text = self.isRedact == 1 ? GJText(@"请设置地址名称") : self.railModel.name;
if (i == 2)
text = self.isRedact == 1 ? GJText(@"请设置详细地址") : self.railModel.address;
UIButton *rightBtn = [UICommon ui_buttonSimple:CGRectZero font:FontADA_(13) normalColor:self.isRedact == 1 ? KKGrey121 : KKTextBlackColor normalText:text click:^(UIButton *btn) {
if (btn.tag == 1)
{
RailNameTagViewController *vc = [RailNameTagViewController new];
vc.addressName = weakself.nameBtn.currentTitle;
vc.isAddressName = ^(NSString * _Nonnull name) {
[weakself.nameBtn setTitle:name forState:0];
self.railModel.name = name;
[weakself.nameBtn setTitleColor:KKTextBlackColor forState:0];
};
[weakself.navigationController pushViewController:vc animated:YES];
}
else
{
if (self.railType == 1)
{
RailAddressViewController *vc = [RailAddressViewController new];
vc.railModel = self.railModel;
vc.isRedact = self.isRedact;
vc.isAddressModel = ^(SafetyRailModel * _Nonnull model) {
[weakself.addressBtn setTitle:model.address forState:0];
self.railModel.address = model.address;
self.railModel.lat = model.lat;
self.railModel.lon = model.lon;
self.railModel.radius = model.radius;
[weakself.addressBtn setTitleColor:KKTextBlackColor forState:0];
};
[self.navigationController pushViewController:vc animated:YES];
}
else
{
// [UICommon MessageErrorText:@"多边形围栏正在开发"];
MoreRailAddressViewController *vc = [[MoreRailAddressViewController alloc] init];
vc.railModel = self.railModel;
vc.isRedact = self.isRedact;
vc.isAddressModel = ^(SafetyRailModel * _Nonnull model) {
[weakself.addressBtn setTitle:model.address forState:0];
self.railModel.address = model.address;
// self.railModel.lat = model.lat;
// self.railModel.lon = model.lon;
self.railModel.radius = model.radius;
[weakself.addressBtn setTitleColor:KKTextBlackColor forState:0];
};
[self.navigationController pushViewController:vc animated:YES];
}
}
}];
rightBtn.tag = i;
rightBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;
if (i == 1) self.nameBtn = rightBtn;
if (i == 2) self.addressBtn = rightBtn;
[bgView addSubview:rightBtn];
[rightBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(rightImg.mas_left).inset(5);
make.centerY.equalTo(titleLabel);
make.left.equalTo(bgView).offset(100);
make.height.mas_equalTo(Adapted(48));
}];
}
else if (i == 3)
{
UIButton *endTime = [UICommon ui_buttonSimple:CGRectZero font:FontADA_(13) normalColor:KKTextBlackColor normalText:self.isRedact == 2 ? self.railModel.endTime : @"17:00" click:^(id x) {
@ -159,7 +237,7 @@ @@ -159,7 +237,7 @@
make.centerY.equalTo(titleLabel);
make.size.mas_equalTo(CGSizeMake(Adapted(60), Adapted(32)));
}];
}
else
{
@ -238,14 +316,31 @@ @@ -238,14 +316,31 @@
[parameters setValue:self.endTime.currentTitle forKey:@"endTime"];
[parameters setValue:self.startTime.currentTitle forKey:@"startTime"];
[parameters setValue:self.railModel.address forKey:@"address"];
[parameters setValue:self.railModel.lat forKey:@"lat"];
[parameters setValue:self.railModel.lon forKey:@"lon"];
[parameters setValue:self.nameBtn.currentTitle forKey:@"name"];
[parameters setValue:@(self.railModel.radius) forKey:@"radius"];
[parameters setValue:[self.btnArr componentsJoinedByString:@""] forKey:@"week"];
NSString *urlStr;
if (self.railType == 1)
{
/// 圆形电子围栏
[parameters setValue:self.railModel.lat forKey:@"lat"];
[parameters setValue:self.railModel.lon forKey:@"lon"];
[parameters setValue:@(self.railModel.radius) forKey:@"radius"];
urlStr = self.isRedact == 1 ? AddRails_URL : UpdateRails_URL;
}
if (self.railType == 2)
{
/// 多边形电子围栏
[parameters setValue:self.railModel.boundaryCoordinates forKey:@"coordinateDTOS"];
urlStr = self.isRedact == 1 ? AddRails2Polygon_URL : UpdateRails2Polygon_URL;
}
if (self.isRedact == 2)
{
/// 编辑电子围栏
[parameters setValue:self.railModel.Id forKey:@"id"];
[[[APIManager sharedManager] APPOST:self.isRedact == 1 ? AddRails_URL : UpdateRails_URL parameters:parameters isJson:YES resultClass:nil] subscribeNext:^(id _Nullable x) {
[parameters setValue:self.railModel.status forKey:@"status"];
}
[[[APIManager sharedManager] APPOST:urlStr parameters:parameters isJson:YES resultClass:nil] subscribeNext:^(id _Nullable x) {
[UICommon HidenLoading];
self.isUpdataModel();
[self.navigationController popViewControllerAnimated:YES];
@ -254,6 +349,7 @@ @@ -254,6 +349,7 @@
NSDictionary *dic = error.userInfo;
[UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]];
}];
}
- (NSMutableArray *)getWeekArr:(NSString *)string
@ -269,6 +365,12 @@ @@ -269,6 +365,12 @@
return weekArr;
}
- (void)selectbtnImg:(UIButton *)btn :(UIButton *)btn1
{
[btn setImage:ImageName_(@"comm_selectBtn_Select") forState:UIControlStateNormal];
[btn1 setImage:ImageName_(@"comm_selectBtn_Normal") forState:UIControlStateNormal];
}
/*
#pragma mark - Navigation

6
LekangGuard/Map/Fence(电子围栏)/Model/SafetyRailModel.h

@ -53,6 +53,12 @@ NS_ASSUME_NONNULL_BEGIN @@ -53,6 +53,12 @@ NS_ASSUME_NONNULL_BEGIN
/// string example: 重复星期数
@property (nonatomic ,copy) NSString *week;
/// 多个经纬度的‘顶点坐标’集合,注意一定要是多边形的顶点 (多边形围栏)
@property (nonatomic ,copy) NSArray *boundaryCoordinates;
/// 围栏类型 1或2 1就是圆形参数就是一个经纬度和半径;2就是多边形参数是一组经纬度
@property (nonatomic ,assign) NSInteger type;
@end
NS_ASSUME_NONNULL_END

23
LekangGuard/Map/Fence(电子围栏)/MoreRailAddressViewController.h

@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
//
// MoreRailAddressViewController.h
// LekangGuard
//
// Created by ecell on 2023/8/30.
//
#import "BaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface MoreRailAddressViewController : BaseViewController
@property (nonatomic ,strong) SafetyRailModel *railModel;
/// 是否编辑 1:添加,2:编辑
@property (nonatomic ,assign) NSInteger isRedact;
@property (nonatomic ,strong) void(^isAddressModel)(SafetyRailModel *model);
@end
NS_ASSUME_NONNULL_END

454
LekangGuard/Map/Fence(电子围栏)/MoreRailAddressViewController.m

@ -0,0 +1,454 @@ @@ -0,0 +1,454 @@
//
// MoreRailAddressViewController.m
// LekangGuard
//
// Created by ecell on 2023/8/30.
//
#import "MoreRailAddressViewController.h"
#import "AppDelegate.h"
#import "RailSearchAddressVC.h"
#import "SLMarqueeControl.h"
@interface MoreRailAddressViewController ()<MAMapViewDelegate,AMapGeoFenceManagerDelegate>
@property (nonatomic,strong) MAMapView * mapView;
@property (nonatomic, strong) MACircle * circleView;
@property (nonatomic, strong) MAPolygon *polygon;
@property (nonatomic, strong) NSMutableArray *annotations;
@property (nonatomic ,assign) CLLocationCoordinate2D points;
@property (nonatomic ,strong) UIView *topView;
@property (nonatomic ,weak) SLMarqueeControl *marqueeControl;
@property (nonatomic ,strong) MAAnnotationView *UserannotationView;
/// 底部View
@property (nonatomic ,strong) UIView *bottomView;
@property (nonatomic ,assign) NSInteger tags;
@end
@implementation MoreRailAddressViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.zx_navTitle = @"地址";
[self zx_setRightBtnWithText:GJText(@"保存") clickedBlock:^(ZXNavItemBtn * _Nonnull btn) {
if (self.annotations.count <= 0)
{
[UICommon MessageErrorText:@"电子围栏不能为空"];
return;
}
[self setbao];
}];
[MAMapView updatePrivacyShow:AMapPrivacyShowStatusDidShow privacyInfo:AMapPrivacyInfoStatusDidContain];
[MAMapView updatePrivacyAgree:AMapPrivacyAgreeStatusDidAgree];
[AMapSearchAPI updatePrivacyShow:(AMapPrivacyShowStatusDidShow) privacyInfo:(AMapPrivacyInfoStatusDidContain)];
[self.view addSubview:self.bottomView];
[self.view addSubview:self.mapView];
[self.view addSubview:self.topView];
[self.mapView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view).offset(iPhoneX_NavHeight);
make.left.right.equalTo(self.view);
make.bottom.equalTo(self.bottomView.mas_top);
}];
//初始化 MAUserLocationRepresentation 对象
MAUserLocationRepresentation *r = [[MAUserLocationRepresentation alloc] init];
r.showsAccuracyRing = NO;///精度圈是否显示,默认YES
[self.mapView updateUserLocationRepresentation:r];
if (self.isRedact == 2)
[UICommon MessageUpload:@"地图加载中"];
kWeakSelf(self)
AfterDispatch(1, ^{
if (self.isRedact == 2)
{
[UICommon HidenLoading];
if (self.railModel)
{
self.marqueeControl.marqueeLabel.text = self.railModel.address;
for (NSDictionary *dic in self.railModel.boundaryCoordinates)
{
MAPointAnnotation *a1 = [[MAPointAnnotation alloc] init];
a1.coordinate = (CLLocationCoordinate2D){[dic[@"latitude"] doubleValue],[dic[@"longitude"] doubleValue]};
[self.annotations addObject:a1];
}
CLLocationCoordinate2D points[self.annotations.count];
for (int i = 0; i < self.annotations.count; i++)
{
self.tags = i;
MAPointAnnotation *point = self.annotations[i];
// [self.mapView removeAnnotation:point];
points[i] = CLLocationCoordinate2DMake(point.coordinate.latitude, point.coordinate.longitude);
[self.mapView addAnnotation:point];
}
self.polygon = [MAPolygon polygonWithCoordinates:points count:self.annotations.count];
[self.mapView addOverlay:self.polygon];
}
}
});
}
//自定义标记点位置发生改变
- (void)mapView:(MAMapView *)mapView annotationView:(MAAnnotationView *)view didChangeDragState:(MAAnnotationViewDragState)newState fromOldState:(MAAnnotationViewDragState)oldState
{
if ([view.reuseIdentifier isEqualToString:@"annotationReuseIndetifier"])
{
NSLog(@"x=%f,y=%f,tag=%ld",view.annotation.coordinate.latitude,view.annotation.coordinate.longitude,view.tag);
// MAMetersBetweenMapPoints(<#MAMapPoint a#>, <#MAMapPoint b#>)
// 定位点拖拽结束
if(newState == MAAnnotationViewDragStateEnding)
{
[self.mapView removeOverlay:self.polygon];
MAPointAnnotation *a1 = [[MAPointAnnotation alloc] init];
a1.coordinate = (CLLocationCoordinate2D){view.annotation.coordinate.latitude,view.annotation.coordinate.longitude};
[self.annotations replaceObjectAtIndex:view.tag withObject:a1];
CLLocationCoordinate2D points[self.annotations.count];
for (int i = 0; i < self.annotations.count; i++)
{
MAPointAnnotation *p = self.annotations[i];
points[i] = CLLocationCoordinate2DMake(p.coordinate.latitude, p.coordinate.longitude);
}
self.polygon = [MAPolygon polygonWithCoordinates:points count:self.annotations.count];
[self.mapView addOverlay:self.polygon];
}
}
}
#pragma mark - MAMapViewDelegate
//绘制区域图形的相关属性配置 可以是矩形 多边形 圆形
- (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id<MAOverlay>)overlay
{
if ([overlay isKindOfClass:[MAPolygon class]])
{
MAPolygonRenderer *pol = [[MAPolygonRenderer alloc] initWithPolygon:overlay];
pol.lineWidth = 2.f;
pol.lineJoinType = kMALineJoinRound;
pol.strokeColor = KKMainColor;
pol.fillColor = RGBA(59, 161, 245, .2);
pol.lineDashType = kMALineDashTypeNone;
pol.miterLimit = 5;
return pol;
}
return nil;
}
/*!
@brief 根据anntation生成对应的View
@param mapView 地图View
@param annotation 指定的标注
@return 生成的标注View
*/
- (MAAnnotationView*)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation
{
//定位蓝点 如果不在此判断 自身的定位点样式会被其他自定义的样式修改
if ([annotation isKindOfClass:[MAUserLocation class]])
{
static NSString *customReuseIndetifier = @"customReuseIndetifier";
self.UserannotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:customReuseIndetifier];
if (self.UserannotationView == nil)
{
self.UserannotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:customReuseIndetifier];
}
self.UserannotationView.canShowCallout = NO;//允许交互点击
self.UserannotationView.draggable = NO;
self.UserannotationView.image = ImageName_(@"icon_home_page_orientation");//设置大头针视图的图片
return self.UserannotationView;
}
if ([annotation isKindOfClass:[MAPointAnnotation class]])
{
static NSString *reuseIndetifier = @"annotationReuseIndetifier";
MAAnnotationView *annotationView = (MAAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseIndetifier];
if (annotationView == nil)
{
annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIndetifier];
}
annotationView.tag = self.tags;
annotationView.image = [UIImage imageNamed:@"map_weilan_select"];
annotationView.canShowCallout = NO;
annotationView.draggable = YES;
//设置中心点偏移,使得标注底部中间点成为经纬度对应点
annotationView.centerOffset = CGPointMake(0, 0);
return annotationView;
}
return nil;
}
//点击屏幕获取经纬度 (手动获取模拟数据使用)
- (void)mapView:(MAMapView *)mapView didSingleTappedAtCoordinate:(CLLocationCoordinate2D)coordinate
{
NSLog(@"%f ---- %f",coordinate.latitude,coordinate.longitude);
MAPointAnnotation *point = [[MAPointAnnotation alloc] init];
if (self.annotations.count > 2)
return;
point.coordinate = (CLLocationCoordinate2D){coordinate.latitude,coordinate.longitude};
[self.annotations addObject:point];
if(self.annotations.count == 3)
[self addInteractionPoint];
CLLocationCoordinate2D points[self.annotations.count];
for (int i = 0; i < self.annotations.count; i++)
{
self.tags = i;
point = self.annotations[i];
[self.mapView removeAnnotation:point];
points[i] = CLLocationCoordinate2DMake(point.coordinate.latitude, point.coordinate.longitude);
[_mapView addAnnotation:point];
}
self.polygon = [MAPolygon polygonWithCoordinates:points count:self.annotations.count];
[self.mapView addOverlay:self.polygon];
}
/// 点击地图形成三个点,强制在两点之间添加单个标记
- (void)addInteractionPoint
{
MAPointAnnotation *p = self.annotations[0];
MAPointAnnotation *p1 = self.annotations[1];
MAPointAnnotation *p2 = self.annotations[2];
double aa = (p.coordinate.latitude+p1.coordinate.latitude)/2;
double bb = (p.coordinate.longitude+p1.coordinate.longitude)/2;
MAPointAnnotation *a = [[MAPointAnnotation alloc] init];
a.coordinate = (CLLocationCoordinate2D){aa,bb};
double aaa = (p1.coordinate.latitude+p2.coordinate.latitude)/2;
double bbb = (p1.coordinate.longitude+p2.coordinate.longitude)/2;
MAPointAnnotation *as = [[MAPointAnnotation alloc] init];
as.coordinate = (CLLocationCoordinate2D){aaa,bbb};
double aaaa = (p2.coordinate.latitude+p.coordinate.latitude)/2;
double bbbb = (p2.coordinate.longitude+p.coordinate.longitude)/2;
MAPointAnnotation *ass = [[MAPointAnnotation alloc] init];
ass.coordinate = (CLLocationCoordinate2D){aaaa,bbbb};
[self.annotations insertObject:a atIndex:1];
[self.annotations insertObject:as atIndex:3];
[self.annotations addObject:ass];
}
/**
* @brief 长按地图,返回经纬度
* @param mapView 地图View
* @param coordinate 经纬度
*/
- (void)mapView:(MAMapView *)mapView didLongPressedAtCoordinate:(CLLocationCoordinate2D)coordinate;
{
CLLocation *curLocation = [[CLLocation alloc] initWithLatitude:coordinate.latitude
longitude:coordinate.longitude];
[self getAddressWithLocation:curLocation];
}
- (void)mapInitComplete:(MAMapView *)mapView
{
if (self.isRedact == 1)
[self getAddressWithLocation:mapView.userLocation.location];
}
#pragma mark 根据坐标取得地名
-(void)getAddressWithLocation:(CLLocation *)location
{
//反地理编码
CLGeocoder *geocoder = [[CLGeocoder alloc]init];
kWeakSelf(self)
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *placemark = [placemarks firstObject];
NSLog(@"详细信息:%@",placemark.addressDictionary);
NSString *name;
if (placemark.addressDictionary)
{
name = placemark.addressDictionary[@"FormattedAddressLines"][0];
}
else if(placemark.subLocality)
{
name = [NSString stringWithFormat:@"%@%@",
placemark.subLocality,placemark.name];
}else{
name = [NSString stringWithFormat:@"%@ %@",
placemark.locality,placemark.name];
}
weakself.railModel.address = name;
//在导航栏上赋值地址
weakself.marqueeControl.marqueeLabel.text = name;
// weakself.railModel.lon = F(@"%f", location.coordinate.longitude);
// weakself.railModel.lat = F(@"%f", location.coordinate.latitude);
//[weakself.myTableView reloadData];
}];
}
- (UIView *)bottomView
{
if (!_bottomView)
{
_bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, SCREEN_HEIGHT - (iPhoneX_TabbarHeight+20), SCREEN_WIDTH, iPhoneX_TabbarHeight+20)];
_bottomView.backgroundColor = KKWhiteColorColor;
UIButton *deleteBtn = [UICommon ui_buttonSimple:CGRectZero font:Font_(0) normalColor:KKMainColor normalText:@"" click:^(id x) {
if (self.annotations.count <= 0) return;
[self.mapView removeAnnotations:self.mapView.annotations];
[self.mapView removeOverlays:self.mapView.overlays];
[self.annotations removeAllObjects];
}];
deleteBtn.backgroundColor = KKMainColor;
[deleteBtn setImage:ImageName_(@"icon_delect_1") forState:0];
[_bottomView addSubview:deleteBtn];
[deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(_bottomView.mas_right);
make.top.equalTo(_bottomView.mas_top);
make.bottom.equalTo(_bottomView.mas_bottom);
make.width.mas_equalTo(Adapted(65));
}];
UILabel *titleLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentLeft font:FontADA_(12) textColor:UIColor.redColor text:@"" Radius:0];
titleLabel.text = @"1.绘制方法:请顺时针或逆时针依次标记电子围栏,标记点不可交叉,否则电子围栏将会产生错误;\n2.长按电子围栏标记点2秒可对电子围栏范围进行编辑.";
[_bottomView addSubview:titleLabel];
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(_bottomView).offset(15);
make.right.equalTo(deleteBtn.mas_left).inset(5);
make.top.equalTo(_bottomView).offset(10);
}];
}
return _bottomView;
}
- (UIView *)topView
{
if (!_topView)
{
kWeakSelf(self)
_topView = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:Adapted(12.5) borderWidth:0 borderColor:KKWhiteColorColor];
_topView.frame = CGRectMake(10, iPhoneX_NavHeight+6, SCREEN_WIDTH-20, Adapted(25));
UIImageView *locationTypeImageView = [UICommon ui_imageView:CGRectZero fileName:@"home_icon_gps"];
[_topView addSubview:locationTypeImageView];
[locationTypeImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(_topView).offset(13);
make.centerY.equalTo(_topView);
make.size.mas_equalTo(CGSizeMake(15, 15));
}];
/// 位置跑马灯
SLMarqueeControl *control = [[SLMarqueeControl alloc] initWithFrame:CGRectMake(38, Adapted(5), SCREEN_WIDTH-20-38-15, 15)];
control.backgroundColor = KKClearColor;
control.marqueeLabel.text = @"长按地图选择位置";
self.marqueeControl = control;
[_topView addSubview:control];
UIButton *pusBtn = [UICommon ui_buttonSimple:CGRectZero font:Font_(0) normalColor:KKMainColor normalText:@"" click:^(id x) {
RailSearchAddressVC *vc = [RailSearchAddressVC new];
vc.selectAddressCallBack = ^(NSString *searchResult, AMapGeoPoint *point) {
// weakself.curLocation = [[CLLocation alloc] initWithLatitude:point.latitude
// longitude:point.longitude];
//
// [weakself updateRegionWithAddress:YES];
weakself.marqueeControl.marqueeLabel.text = searchResult;
weakself.railModel.address = searchResult;
};
[[UICommon currentVC].navigationController pushViewController:vc animated:YES];
}];
[_topView addSubview:pusBtn];
[pusBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.left.equalTo(_topView);
make.top.equalTo(_topView);
make.bottom.equalTo(_topView.mas_bottom);
}];
}
return _topView;
}
- (MAMapView *)mapView
{
if (!_mapView)
{
_mapView = [[MAMapView alloc] initWithFrame:CGRectZero];
_mapView.userTrackingMode = MAUserTrackingModeFollow;
///如果您需要进入地图就显示定位小蓝点,则需要下面两行代码
_mapView.showsUserLocation = YES;
_mapView.showsScale = NO;
_mapView.zoomLevel = 18;
_mapView.showTraffic = YES;
_mapView.showsCompass = NO;
_mapView.delegate = self;
}
return _mapView;
}
- (NSMutableArray *)annotations
{
if (!_annotations) _annotations = [NSMutableArray new];
return _annotations;
}
- (void)setbao
{
NSMutableArray *arr = [NSMutableArray new];
for (MAPointAnnotation *p in self.annotations)
{
NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setValue:@(p.coordinate.latitude) forKey:@"latitude"];
[dic setValue:@(p.coordinate.longitude) forKey:@"longitude"];
[arr addObject:dic];
}
self.railModel.boundaryCoordinates = arr;
self.railModel.type = 2;
self.isAddressModel(self.railModel);
[self.navigationController popViewControllerAnimated:YES];
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end

9
LekangGuard/Map/Fence(电子围栏)/RailAddressViewController.m

@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
#import "AppDelegate.h"
#import "RailSearchAddressVC.h"
@interface RailAddressViewController ()<UIGestureRecognizerDelegate,UITextFieldDelegate,CLLocationManagerDelegate,AMapSearchDelegate,UISearchBarDelegate>
@interface RailAddressViewController ()<UIGestureRecognizerDelegate,UITextFieldDelegate,CLLocationManagerDelegate,AMapSearchDelegate,UISearchBarDelegate,MKMapViewDelegate>
@property (nonatomic, strong) CLLocation *curLocation;
@ -186,7 +186,7 @@ @@ -186,7 +186,7 @@
[self.mapView setRegion:MKCoordinateRegionMakeWithDistance(self.curLocation.coordinate, radius * 3, radius * 3)
animated:YES];
} @catch (NSException *exception) {
NSLog(@"radius :%d coordinate: lon:%f lat: %f",radius ,self.curLocation.coordinate.longitude,self.curLocation.coordinate.latitude);
NSLog(@"radius :%ld coordinate: lon:%f lat: %f",(long)radius ,self.curLocation.coordinate.longitude,self.curLocation.coordinate.latitude);
} @finally {
@ -231,7 +231,6 @@ @@ -231,7 +231,6 @@
#pragma mark MKMapViewDelegate
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
NSLog(@"重新渲染 rendererForOverlay");
@ -389,7 +388,9 @@ @@ -389,7 +388,9 @@
if (!_mapView)
{
_mapView = [[MKMapView alloc] initWithFrame:CGRectZero];
// _mapView.delegate = self;
_mapView.delegate = self;
// _mapView.showsUserLocation = YES;
// _mapView.userTrackingMode = MkUserTrackingModeFollow;
MKCoordinateSpan span = MKCoordinateSpanMake(0.021251, 0.016093);
CLLocationCoordinate2D center = self.mapView.region.center;
[_mapView setRegion:MKCoordinateRegionMake(center, span) animated:YES];

2
LekangGuard/Map/Fence(电子围栏)/RailSearchAddressVC.m

@ -45,7 +45,7 @@ @@ -45,7 +45,7 @@
self.search = [[AMapSearchAPI alloc] init];
self.search.delegate = self;
self.zx_navBar.zx_titleView.backgroundColor = KKMainColor;
self.zx_navBar.zx_titleView.backgroundColor = KKClearColor;
[self.zx_navBar.zx_titleView addSubview:self.searchBar];
[self.view addSubview:self.comTable];

5
LekangGuard/Map/Fence(电子围栏)/View/ElectronicFenceTableViewCell.m

@ -47,7 +47,10 @@ @@ -47,7 +47,10 @@
{
_railModel = railModel;
self.tagLabel.text = railModel.name;
self.scopeLabel.text = F(GJText(@"当前范围%ld米"), railModel.radius);
if (self.railModel.type == 1)
self.scopeLabel.attributedText = [UICommon labelFontSize:F(GJText(@"圆形围栏 范围%ld米"), railModel.radius)];
else
self.scopeLabel.attributedText = [UICommon labelFontSize:@"多边形围栏"];
self.openBtn.selected = railModel.status;
self.addressLabel.text = railModel.address;
NSMutableArray *weekArr = [UICommon getWeekStr:railModel.week];

4
LekangGuard/Map/VC/MapViewController.m

@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
#import "SLMarqueeControl.h"
#import "MapBtnTableViewCell.h"
@interface MapViewController ()
@property (nonatomic ,strong) UIView *topView;
@ -66,6 +67,9 @@ @@ -66,6 +67,9 @@
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = KKBackgroundGrey;
[MAMapView updatePrivacyShow:AMapPrivacyShowStatusDidShow privacyInfo:AMapPrivacyInfoStatusDidContain];
[MAMapView updatePrivacyAgree:AMapPrivacyAgreeStatusDidAgree];
[AMapSearchAPI updatePrivacyShow:(AMapPrivacyShowStatusDidShow) privacyInfo:(AMapPrivacyInfoStatusDidContain)];
self.zx_navLeftBtn.titleLabel.font = FontBoldADA_(18);
[self.zx_navLeftBtn setTitleColor:KKWhiteColorColor forState:0];

4
LekangGuard/My/About(关于我们)/AboutViewController.m

@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
}
else
{
// NSString *string = [NSString stringWithFormat:@"mailto://support@ecellsz.com ?subject=%@%@",GJText(@"智慧校园"),GJText(@"意见反馈")];
// NSString *string = [NSString stringWithFormat:@"mailto://support@ecellsz.com ?subject=%@%@",GJText(@"守护星"),GJText(@"意见反馈")];
// string = [string stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
// NSURL *emailURL = [NSURL URLWithString:string];
// [[UIApplication sharedApplication] openURL:emailURL options:[NSDictionary new] completionHandler:nil];
@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
}];
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
UILabel *versionLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontADA_(18) textColor:KKTextBlackColor text:F(@"%@(V%@)", GJText(@"智慧校园"),version) Radius:0];
UILabel *versionLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontADA_(18) textColor:KKTextBlackColor text:F(@"%@(V%@)", GJText(@"守护星"),version) Radius:0];
[_headerView addSubview:versionLabel];
[versionLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(_headerView);

4
LekangGuard/My/Message(消息)/MessageViewController.h

@ -16,14 +16,12 @@ NS_ASSUME_NONNULL_BEGIN @@ -16,14 +16,12 @@ NS_ASSUME_NONNULL_BEGIN
*/
@property (assign , nonatomic)NSInteger selectedIndex;
/// 申请关注
- (void)applicationRrecord;
- (void)updataSystermMessage;
- (void)updataRemindMessage;
- (void)updataCallMessage;
@end

32
LekangGuard/My/Message(消息)/MessageViewController.m

@ -33,17 +33,11 @@ @@ -33,17 +33,11 @@
NSMutableArray *titles = [NSMutableArray array];
[titles addObject:GJText(@"提醒")];
[titles addObject:GJText(@"关注记录")];
[titles addObject:GJText(@"通知")];
//[titles addObject:GJText(@"通话记录")];
RemindMessageViewController *vc = [RemindMessageViewController new];
AttentionMessageViewController *vc1 = [AttentionMessageViewController new];
SystermMessageViewController *vc2 = [SystermMessageViewController new];
// CallMessageViewController *vc3 = [CallMessageViewController new];
[self.controllers addObject:vc];
[self.controllers addObject:vc1];
[self.controllers addObject:vc2];
//[self.controllers addObject:vc3];
self.PageView = [[MCPageView alloc]initWithFrame:CGRectMake(0, iPhoneX_NavHeight, SCREEN_WIDTH,SCREEN_HEIGHT-iPhoneX_NavHeight) titles:titles controllers:self.controllers];
@ -77,32 +71,15 @@ @@ -77,32 +71,15 @@
}
else if (self.selectedIndex == 1)
{
AttentionMessageViewController *vc = self.controllers[1];
SystermMessageViewController *vc = self.controllers[1];
[vc deletAction];
}
else if (self.selectedIndex == 2)
{
SystermMessageViewController *vc = self.controllers[2];
[vc deletAction];
}
// else if (self.selectedIndex == 3)
// {
// CallMessageViewController *vc = self.controllers[3];
// [vc deletAction];
// }
}
/// 申请关注
- (void)applicationRrecord
{
AttentionMessageViewController *vc = self.controllers[1];
[vc GetQueryFollowInfo:TableisReload_h];
}
- (void)updataSystermMessage
{
SystermMessageViewController *vc = self.controllers[2];
SystermMessageViewController *vc = self.controllers[1];
[vc GetNotifyList:TableisReload_h];
}
@ -112,11 +89,6 @@ @@ -112,11 +89,6 @@
[vc GetRemindList:TableisReload_h];
}
- (void)updataCallMessage
{
CallMessageViewController *vc = self.controllers[3];
[vc GetRemindList:TableisReload_h];
}
- (void)MCPageView:(MCPageView *)MCPageView didSelectIndex:(NSInteger)Index
{

10
LekangGuard/My/VC/MyViewController.m

@ -13,6 +13,7 @@ @@ -13,6 +13,7 @@
#import "ModifyDataViewController.h"
#import "MyTableViewHeaderView.h"
#import "MyTableViewCell.h"
#import "SchAndJobMessageViewController.h"
@interface MyViewController ()<UITableViewDelegate,UITableViewDataSource>
@ -120,6 +121,13 @@ @@ -120,6 +121,13 @@
vc.selectedIndex = 0;
[self.navigationController pushViewController:vc animated:YES];
}
else if ([title isEqualToString:@"校园通知"])
{
SchAndJobMessageViewController *vc = [[SchAndJobMessageViewController alloc] init];
vc.navTitle = @"校园通知";
vc.viewType = 0;
[[UICommon currentVC].navigationController pushViewController:vc animated:YES];
}
else if ([title isEqualToString:@"意见反馈"])
{
NSString *string = [NSString stringWithFormat:@"mailto://support@ecellsz.com ?subject=%@意见反馈",APPName];
@ -137,7 +145,7 @@ @@ -137,7 +145,7 @@
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
[DPClearCacheTool clearCaches];
AfterDispatch(1, ^{
[self.moreTableView reloadData];
[weakself.moreTableView reloadData];
});
}];
}];

4
LekangGuard/My/VC/View/MyTableViewCell.m

@ -66,7 +66,7 @@ @@ -66,7 +66,7 @@
self.iconImg = iconImg;
[self.contentView addSubview:iconImg];
[iconImg mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.contentView).offset(15);
make.left.equalTo(self.contentView).offset(25);
make.centerY.equalTo(self.contentView);
make.size.mas_equalTo(CGSizeMake(22, 22));
}];
@ -75,7 +75,7 @@ @@ -75,7 +75,7 @@
self.titleLabel = titleLabel;
[self.contentView addSubview:titleLabel];
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(iconImg.mas_right).offset(29);
make.left.equalTo(iconImg.mas_right).offset(19);
make.centerY.equalTo(self.contentView);
}];

0
LekangGuard/My/Message(消息)/AttentionMessageViewController.h → LekangGuard/Protection(守护星)/VC/AttentionMessageViewController.h

31
LekangGuard/My/Message(消息)/AttentionMessageViewController.m → LekangGuard/Protection(守护星)/VC/AttentionMessageViewController.m

@ -26,7 +26,11 @@ @@ -26,7 +26,11 @@
if (!_myTableView)
{
kWeakSelf(self)
_myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
if (@available(iOS 13.0, *)) {
_myTableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleInsetGrouped];
} else {
// Fallback on earlier versions
}
_myTableView.backgroundColor = KKClearColor;
_myTableView.delegate = self;
_myTableView.dataSource = self;
@ -61,8 +65,13 @@ @@ -61,8 +65,13 @@
self.ImgType = Xiaoxi;
[self.view addSubview:self.myTableView];
[self.myTableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
make.top.equalTo(self.view);
make.left.right.equalTo(self.view).inset(-10);
make.bottom.equalTo(self.view.mas_bottom);
}];
if (@available(iOS 15.0, *)) {
self.myTableView.sectionHeaderTopPadding = 0.01;
}
[self GetQueryFollowInfo:TableisReload_h];
// Do any additional setup after loading the view.
@ -144,15 +153,24 @@ @@ -144,15 +153,24 @@
return UITableViewCellEditingStyleNone;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return self.modelListArr.count;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 12;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
AttentionModel *dMessage = self.modelListArr[indexPath.row];
AttentionModel *dMessage = self.modelListArr[indexPath.section];
NSString *str ;
if([dMessage.type isEqualToString:@"applicationRrecord"]){
@ -181,7 +199,7 @@ @@ -181,7 +199,7 @@
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
AttentionModel *dMessage = self.modelListArr[indexPath.row];
AttentionModel *dMessage = self.modelListArr[indexPath.section];
MessageTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MessageTableViewCellID" forIndexPath:indexPath];
cell.timeLabel.text = [UICommon getDateFormatWithStr:@"HH:mm" date:[UICommon getTimeStrWithString:dMessage.createTime]]; //时间
@ -247,7 +265,7 @@ @@ -247,7 +265,7 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
AttentionModel *dMessage = self.modelListArr[indexPath.row];
AttentionModel *dMessage = self.modelListArr[indexPath.section];
[UICommon MessageUpload:@"加载中"];
[self updateInfoStatus:dMessage];
}
@ -275,6 +293,7 @@ @@ -275,6 +293,7 @@
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[[[APIManager sharedManager] APGET:F(@"%@%@/1", UpdateInfoStatus_URL,model.Id) parameters:parameters resultClass:nil] subscribeNext:^(id _Nullable x) {
[UICommon HidenLoading];
[weakself GetQueryFollowInfo:TableisReload_h];
[[NSNotificationCenter defaultCenter] postNotificationName:KK_UPDATE_ALL_NEWS_MESSAGE object:nil];
} error:^(NSError * _Nullable error) {
NSDictionary *dic = error.userInfo;

16
LekangGuard/Protection(守护星)/VC/MemberListViewController.h

@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
//
// MemberListViewController.h
// LekangGuard
//
// Created by ecell on 2023/8/29.
//
#import "BaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface MemberListViewController : BaseViewController
@end
NS_ASSUME_NONNULL_END

234
LekangGuard/Protection(守护星)/VC/MemberListViewController.m

@ -0,0 +1,234 @@ @@ -0,0 +1,234 @@
//
// MemberListViewController.m
// LekangGuard
//
// Created by ecell on 2023/8/29.
//
#import "MemberListViewController.h"
#import "MemberListTableViewCell.h"
#import "AmendContactsViewController.h"
@interface MemberListViewController ()<DZNEmptyDataSetSource,DZNEmptyDataSetDelegate>
@property (nonatomic ,strong) CommonTableView *listTable;
/// 用户身份(0:游客,1:普通用户(关注的人),2:管理员)
@property (nonatomic ,assign) NSInteger identity;
@end
@implementation MemberListViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = KKBackgroundGrey;
[self.view addSubview:self.listTable];
[self.listTable mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
[self GetQueryAddressList];
}
- (CommonTableView *)listTable
{
if (!_listTable)
{
_listTable = [[CommonTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain cellHeight:88 cellRow:0 isAdaptive:NO isLine:NO commonCell:MemberListTableViewCell.class createCell:^(ZZTableViewCell * _Nonnull cells, NSIndexPath * _Nonnull indexPath) {
MemberListTableViewCell *cell = (MemberListTableViewCell *)cells;
cell.contactsModel = self.modelListArr[indexPath.row];
} selectedCell:^(UITableView * _Nonnull tableView, NSIndexPath * _Nonnull indexPath) {
ContactsModel *contacts = self.modelListArr[indexPath.row];
if(self.identity == 2)/// 如果自己是管理员可操作其他联系人
{
//如果自己是管理员
kWeakSelf(self)
//是自己---直接跳
if([contacts.openId isEqualToString:APIManager.sharedManager.loginModel.openid]){
[self jumpContactVCWith:contacts];
return;
}
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:nil subtitle:F(@"%@ %@",GJText(@"联系人"),contacts.name) AlertViewType:AlertViewTypeSystemActionSheet config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"取消") type:AlertItemTypeSystemCancel callback:nil];
}];
[alertV addAlertItemWithTitle:GJText(@"删除") type:AlertItemTypeSystemDestructive callback:^(EasyAlertView *showview, long index) {
[weakself deleteContactFuntionWith:@[contacts.Id]];
}];
if(contacts.identity != 2 && contacts.openId)
{
[alertV addAlertItemWithTitle:GJText(@"设置为管理员") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
NSString *msg = [NSString stringWithFormat:@"%@ %@ ?",GJText(@"确认将管理员转给"),contacts.relation];
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:GJText(@"提示") subtitle:msg AlertViewType:AlertViewTypeSystemAlert config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"取消") type:AlertItemTypeSystemCancel callback:nil];
}];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"确定") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
[weakself SetAdmin:contacts.Id identity:2];
}];
}];
[alertV showAlertView];
}];
}
if(contacts.setBind == 0)
{
[alertV addAlertItemWithTitle:GJText(@"编辑联系人") type:AlertItemTypeSystemDefault callback:^(EasyAlertView *showview, long index) {
[weakself jumpContactVCWith:contacts];
}];
}
[alertV showAlertView];
}
else
{
//成员
//是自己---直接跳
if([contacts.openId isEqualToString:APIManager.sharedManager.loginModel.openid])
{
[self jumpContactVCWith:contacts];
return;
}
else if(contacts.openId)
{
// 非自己的成员(也包括管理员)
return;
}
else
{
//普通联系人
kWeakSelf(self)
EasyAlertView *alertV = [EasyAlertView alertViewWithTitle:nil subtitle:[NSString stringWithFormat:@"%@ %@",GJText(@"联系人"),contacts.name] AlertViewType:AlertViewTypeSystemActionSheet config:nil];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"取消") type:AlertItemTypeSystemCancel callback:nil];
}];
[alertV addAlertItem:^EasyAlertItem *{
return [EasyAlertItem itemWithTitle:GJText(@"删除") type:AlertItemTypeSystemDestructive callback:^(EasyAlertView *showview, long index) {
[weakself deleteContactFuntionWith:@[contacts.Id]];
}];
}];
[alertV addAlertItemWithTitleArray:@[GJText(@"编辑联系人")] callback:^(EasyAlertView *showview, long index) {
NSLog(@"%ld",index);
[weakself jumpContactVCWith:contacts];
}];
[alertV showAlertView];
}
}
} DidscrollView:^(UIScrollView * _Nonnull scrollView) {
}];
_listTable.backgroundColor = KKClearColor;
}
return _listTable;
}
#pragma mark 查询通讯录成员
/// 查询通讯录成员
- (void)GetQueryAddressList
{
[UICommon MessageUpload:@"加载中"];
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setValue:APIManager.sharedManager.deviceModel.imei forKey:@"imei"];
[[[APIManager sharedManager] APGET:QueryAddressList_URL parameters:parameters resultClass:nil] subscribeNext:^(NSArray *arr) {
[UICommon HidenLoading];
if (ARRAYHASVALUE(arr))
{
[self.modelListArr removeAllObjects];
for (NSDictionary *dic in arr)
{
ContactsModel *model = [ContactsModel yy_modelWithJSON:dic];
if ([model.openId isEqualToString:APIManager.sharedManager.loginModel.openid])
self.identity = model.identity;
model.isSelect = NO;
if (model.setBind == 1)
[self.modelListArr addObject:model];
}
}
self.listTable.cellRow = self.modelListArr.count;
[self.listTable reloadData];
} error:^(NSError * _Nullable error) {
NSDictionary *dic = error.userInfo;
[UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]];
}];
}
#pragma mark 跳转到 修改/添加 联系人 页面
- (void)jumpContactVCWith:(ContactsModel*)contacts
{
AmendContactsViewController *vc = [AmendContactsViewController new];
vc.conModel = contacts;
vc.isUpdateSucceed = ^{
[self GetQueryAddressList];
};
[[UICommon currentVC].navigationController pushViewController:vc animated:YES];
vc.zx_navTitle = @"修改家庭成员";
}
#pragma mark 删除
/// 删除
- (void)deleteContactFuntionWith:(NSArray *)IdArr
{
if(IdArr.count == 0)
{
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:GJText(@"注意") message:GJText(@"请选择要删除的联系人") style:LGAlertViewStyleAlert buttonTitles:@[GJText(@"确定")] cancelButtonTitle:nil destructiveButtonTitle:nil actionHandler:^(LGAlertView * _Nonnull alertView, NSUInteger index, NSString * _Nullable title) {} cancelHandler:^(LGAlertView * _Nonnull alertView) {} destructiveHandler:^(LGAlertView * _Nonnull alertView) {}];
[alertView showAnimated:YES completionHandler:nil];
return;
}
LGAlertView *alertView = [[LGAlertView alloc] initWithTitle:GJText(@"注意") message:F(GJText(@"确认要删除%ld个联系人?"),IdArr.count) style:LGAlertViewStyleAlert buttonTitles:@[GJText(@"确定")] cancelButtonTitle:GJText(@"取消") destructiveButtonTitle:nil actionHandler:^(LGAlertView * _Nonnull alertView, NSUInteger index, NSString * _Nullable title) {
[UICommon MessageUpload:@"加载中"];
[[[APIManager sharedManager] PostBodyWithApi:F(@"%@?imei=%@", DelBatchAddress_URL,APIManager.sharedManager.deviceModel.imei) json:[IdArr yy_modelToJSONString]] subscribeNext:^(id _Nullable x) {
[UICommon MessageSuccessText:@"删除成功"];
[self GetQueryAddressList];
} completed:^{
}];
} cancelHandler:^(LGAlertView * _Nonnull alertView) {} destructiveHandler:^(LGAlertView * _Nonnull alertView) {}];
[alertView showAnimated:YES completionHandler:nil];
}
#pragma mark 转让管理员
/// 转让管理员
- (void)SetAdmin:(NSString *)Id identity:(NSInteger)identity
{
[UICommon MessageUpload:@"加载中"];
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setValue:Id forKey:@"id"];
[parameters setValue:@(identity) forKey:@"identity"];
[parameters setValue:APIManager.sharedManager.deviceModel.imei forKey:@"imei"];
[[[APIManager sharedManager] APPOST:SetAdmin_URL parameters:parameters isJson:YES resultClass:nil] subscribeNext:^(id _Nullable x) {
[UICommon HidenLoading];
[UICommon MessageSuccessText:@"管理员转让成功"];
[self GetQueryAddressList];
} error:^(NSError * _Nullable error) {
NSDictionary *dic = error.userInfo;
[UICommon MessageErrorText:dic[NSLocalizedDescriptionKey]];
}];
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end

21
LekangGuard/Protection(守护星)/VC/MemberManagementViewController.h

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
//
// MemberManagementViewController.h
// LekangGuard
//
// Created by ecell on 2023/8/29.
//
#import "BaseViewController.h"
NS_ASSUME_NONNULL_BEGIN
@interface MemberManagementViewController : BaseViewController
/**
*/
@property (assign , nonatomic)NSInteger selectedIndex;
@end
NS_ASSUME_NONNULL_END

73
LekangGuard/Protection(守护星)/VC/MemberManagementViewController.m

@ -0,0 +1,73 @@ @@ -0,0 +1,73 @@
//
// MemberManagementViewController.m
// LekangGuard
//
// Created by ecell on 2023/8/29.
//
#import "MemberManagementViewController.h"
#import "MCPageView.h"
#import "MemberListViewController.h"
#import "AttentionMessageViewController.h"
@interface MemberManagementViewController ()<MCPageViewDelegate>
@property (nonatomic , strong) MCPageView * PageView;
@property (nonatomic ,strong) NSMutableArray *controllers;
@end
@implementation MemberManagementViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.zx_navTitle = @"成员管理";
self.view.backgroundColor = KKBackgroundGrey;
NSMutableArray *titles = [NSMutableArray array];
[titles addObject:GJText(@"成员管理")];
[titles addObject:GJText(@"绑定审批/申请")];
self.controllers = [NSMutableArray array];
MemberListViewController *vc = [MemberListViewController new];
AttentionMessageViewController *vc1 = [AttentionMessageViewController new];
[self.controllers addObject:vc];
[self.controllers addObject:vc1];
self.PageView = [[MCPageView alloc]initWithFrame:CGRectMake(0, iPhoneX_NavHeight, SCREEN_WIDTH,SCREEN_HEIGHT-iPhoneX_NavHeight) titles:titles controllers:self.controllers];
self.PageView.delegate = self;
//self.PageView.titleButtonWidth = Adapted(94);
self.PageView.backgroundColor = KKWhiteColorColor;
self.PageView.lineWitdhScale = 0.65;
self.PageView.lineColor = KKMainColor;
self.PageView.selectTitleFont = FontBoldADA_(16);
self.PageView.defaultTitleFont = FontADA_(14);
self.PageView.defaultTitleColor = KKTextBlackColor;
self.PageView.selectTitleColor = KKMainColor;
self.PageView.lastItemBackgroundColor = KKClearColor;
[self.view addSubview:self.PageView];
[self zx_setPopGestureCompatibleScrollViews:@[self.PageView.titleScroll,self.PageView.contentCollection]];
[self.PageView selectIndex:self.selectedIndex];
}
- (void)MCPageView:(MCPageView *)MCPageView didSelectIndex:(NSInteger)Index
{
NSLog(@"%ld",Index);
self.selectedIndex = Index;
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end

2
LekangGuard/Protection(守护星)/VC/ms/MyChildViewController.m

@ -124,7 +124,7 @@ @@ -124,7 +124,7 @@
RedFlowerModel *model = self.modelListArr[i];
if (model.Id == redModel.Id)
{
[self.modelListArr removeObject:model];
// [self.modelListArr removeObject:model];
redModel.receiveStatus = 1;
[self.modelListArr replaceObjectAtIndex:i withObject:redModel];
break;

4
LekangGuard/Protection(守护星)/VC/ms/OtherChildViewController.m

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
//
// OtherChildViewController.m
// LekangGuard
//
@ -122,7 +122,7 @@ @@ -122,7 +122,7 @@
RedFlowerModel *model = self.modelListArr[i];
if (model.Id == redModel.Id)
{
[self.modelListArr removeObject:model];
// [self.modelListArr removeObject:model];
redModel.receiveStatus = 1;
[self.modelListArr replaceObjectAtIndex:i withObject:redModel];
break;

1
LekangGuard/Protection(守护星)/VC/ms/SchAndJobMessageViewController.h

@ -11,6 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @@ -11,6 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface SchAndJobMessageViewController : BaseViewController
/// 类型 : 0 校园通知,1 班级作业
@property (nonatomic ,assign) NSInteger viewType;
@property (nonatomic ,strong) NSString *navTitle;

6
LekangGuard/Protection(守护星)/VC/ms/SchAndJobMessageViewController.m

@ -57,7 +57,7 @@ @@ -57,7 +57,7 @@
vc.schModel = self.modelListArr[indexPath.row];
else
vc.jobModel = self.modelListArr[indexPath.row];
[self.navigationController pushViewController:vc animated:YES];
[[UICommon currentVC].navigationController pushViewController:vc animated:YES];
[self setMessageRead:self.modelListArr[indexPath.row] IndexPath:indexPath];
@ -160,7 +160,7 @@ @@ -160,7 +160,7 @@
SchModel *model = self.modelListArr[i];
if (model.noticeId == schModel.noticeId)
{
[self.modelListArr removeObject:model];
// [self.modelListArr removeObject:model];
schModel.sendReadStatus = 3;
[self.modelListArr replaceObjectAtIndex:i withObject:schModel];
break;
@ -173,7 +173,7 @@ @@ -173,7 +173,7 @@
JobModel *model = self.modelListArr[i];
if (model.Id == jobModel.Id)
{
[self.modelListArr removeObject:model];
// [self.modelListArr removeObject:model];
jobModel.receiveStatus = 3;
[self.modelListArr replaceObjectAtIndex:i withObject:jobModel];
break;

18
LekangGuard/Protection(守护星)/View/MemberListTableViewCell.h

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
//
// MemberListTableViewCell.h
// LekangGuard
//
// Created by ecell on 2023/8/29.
//
#import "ZZTableViewCell.h"
NS_ASSUME_NONNULL_BEGIN
@interface MemberListTableViewCell : ZZTableViewCell
@property (nonatomic ,strong) ContactsModel *contactsModel;
@end
NS_ASSUME_NONNULL_END

119
LekangGuard/Protection(守护星)/View/MemberListTableViewCell.m

@ -0,0 +1,119 @@ @@ -0,0 +1,119 @@
//
// MemberListTableViewCell.m
// LekangGuard
//
// Created by ecell on 2023/8/29.
//
#import "MemberListTableViewCell.h"
@interface MemberListTableViewCell ()
/// 头像
@property (nonatomic ,weak) UIImageView *iconImg;
/// 姓名
@property (nonatomic ,weak) UILabel *nameLabel;
/// 手机号
@property (nonatomic ,weak) UILabel *phoneLabel;
@property (nonatomic ,weak) UILabel *typeLabel;
@end
@implementation MemberListTableViewCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self)
{
self.selectionStyle = UITableViewCellSelectionStyleNone;
self.backgroundColor = KKClearColor;
[self subCellView];
}
return self;
}
- (void)setContactsModel:(ContactsModel *)contactsModel
{
//NSLog(@"-->%@",contactsModel);
_contactsModel = contactsModel;
self.iconImg.image = [UICommon getClickRelationshipImageWithCodeID:contactsModel.image deviceType:APIManager.sharedManager.deviceModel.deviceType];
self.nameLabel.text = contactsModel.relation;
self.phoneLabel.text = contactsModel.phone;
self.typeLabel.text = contactsModel.identity == 2 ? @"管理员" : @"家庭成员";
self.typeLabel.backgroundColor = contactsModel.identity == 2 ? RGB(255, 185, 79) : RGB(255, 216, 154);
if ([contactsModel.openId isEqualToString:APIManager.sharedManager.loginModel.openid])
self.nameLabel.text = @"家庭成员(我)";
else
self.nameLabel.text = F(@"家庭成员(%@)",contactsModel.relation);
}
- (void)subCellView
{
UIView *bgView = [UICommon ui_view:CGRectZero backgroundColor:KKWhiteColorColor cornerRadius:10 borderWidth:0 borderColor:KKWhiteColorColor];
[self.contentView addSubview:bgView];
[bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.contentView.mas_left).offset(10);
make.right.equalTo(self.contentView.mas_right).inset(10);
make.top.equalTo(self.contentView.mas_top).offset(12);
make.bottom.equalTo(self.contentView.mas_bottom);
}];
UIImageView *iconImg = [UICommon ui_imageView:CGRectZero fileName:@""];
iconImg.layer.cornerRadius = 25;
iconImg.layer.masksToBounds = YES;
self.iconImg = iconImg;
[bgView addSubview:iconImg];
[iconImg mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(bgView).offset(11);
make.centerY.equalTo(bgView);
make.size.mas_equalTo(CGSizeMake(50, 50));
}];
UILabel *nameLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontADA_(14) textColor:KKTextBlackColor text:@"" Radius:0];
self.nameLabel = nameLabel;
[bgView addSubview:nameLabel];
[nameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(iconImg.mas_right).offset(10);
make.top.equalTo(iconImg).offset(5);
}];
UILabel *phoneLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:FontADA_(12) textColor:KKGrey133 text:@"" Radius:0];
self.phoneLabel = phoneLabel;
[bgView addSubview:phoneLabel];
[phoneLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(nameLabel);
make.bottom.equalTo(iconImg.mas_bottom).inset(5);
}];
UILabel *typeLabel = [UICommon ui_label:CGRectZero lines:0 align:NSTextAlignmentCenter font:Font_(12) textColor:KKWhiteColorColor text:@"" Radius:8];
self.typeLabel = typeLabel;
[bgView addSubview:typeLabel];
[typeLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(bgView.mas_right).inset(11);
make.centerY.equalTo(bgView);
make.size.mas_equalTo(CGSizeMake(68, 25));
}];
}
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
[super setSelected:selected animated:animated];
// Configure the view for the selected state
}
@end

6
LekangGuard/en.lproj/Localizable.strings

@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
*/
"智慧校园" = "Ecell care";
"守护星" = "Ecell care";
"手机号" = "Phone";
@ -503,9 +503,9 @@ @@ -503,9 +503,9 @@
"设备视频通话联系人管理(注:每次只能和一个联系人视频)" = "Device video call contact management (Note: you can only talk to one contact at a time)";
"请在iPhone的\"设置-隐私-麦克风\"选项中,允许智慧校园访问你的麦克风" = "Please allow in the Settings - Privacy - Microphone \ option on iPhone Ecell care Access your microphone";
"请在iPhone的\"设置-隐私-麦克风\"选项中,允许守护星访问你的麦克风" = "Please allow in the Settings - Privacy - Microphone \ option on iPhone Ecell care Access your microphone";
"请在iPhone的\"设置-隐私-相机\"选项中,允许智慧校园访问你的相机" = "Please allow in the Settings - Privacy - Camera \ option on iPhone Ecell care Access your camera";
"请在iPhone的\"设置-隐私-相机\"选项中,允许守护星访问你的相机" = "Please allow in the Settings - Privacy - Camera \ option on iPhone Ecell care Access your camera";
"正在发起通话请求..." = "Initiating a call request...";

2
LekangGuard/zh-Hans.lproj/InfoPlist.strings

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
Created by ecell on 2023/2/9.
*/
CFBundleDisplayName = "智慧校园";
CFBundleDisplayName = "守护星";
//NSAppleMusicUsageDescription = "Do you allow the App's local concerts to access your music information for showing music information?";
//NSAppleMediaUsageDescription = "Do you allow the App's local music to access your media library for playing music?";

6
LekangGuard/zh-Hans.lproj/Localizable.strings

@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
Created by ecell on 2022/10/8.
*/
"智慧校园" = "智慧校园";
"守护星" = "守护星";
"手机号" = "手机号";
@ -500,9 +500,9 @@ @@ -500,9 +500,9 @@
"设备视频通话联系人管理(注:每次只能和一个联系人视频)" = "设备视频通话联系人管理(注:每次只能和一个联系人视频)";
"请在iPhone的\"设置-隐私-麦克风\"选项中,允许智慧校园访问你的麦克风" = "请在iPhone的\"设置-隐私-麦克风\"选项中,允许智慧校园访问你的麦克风";
"请在iPhone的\"设置-隐私-麦克风\"选项中,允许守护星访问你的麦克风" = "请在iPhone的\"设置-隐私-麦克风\"选项中,允许守护星访问你的麦克风";
"请在iPhone的\"设置-隐私-相机\"选项中,允许智慧校园访问你的相机" = "请在iPhone的\"设置-隐私-相机\"选项中,允许智慧校园访问你的相机";
"请在iPhone的\"设置-隐私-相机\"选项中,允许守护星访问你的相机" = "请在iPhone的\"设置-隐私-相机\"选项中,允许守护星访问你的相机";
"正在发起通话请求..." = "正在发起通话请求...";

7
Podfile

@ -27,7 +27,12 @@ pod 'WechatOpenSDK-XCFramework' @@ -27,7 +27,12 @@ pod 'WechatOpenSDK-XCFramework'
# pod 'HyCycleView'
pod 'DZNEmptyDataSet'
pod 'AMapSearch'
# pod 'AMapSearch'
pod 'AMap3DMap-NO-IDFA'
pod 'AMapSearch-NO-IDFA'
pod 'AMapLocation-NO-IDFA'
pod 'AMapFoundation-NO-IDFA'
pod 'MQTTClient', '0.9.5'
pod 'MJExtension', '3.0.13'

29
Podfile.lock

@ -15,9 +15,13 @@ PODS: @@ -15,9 +15,13 @@ PODS:
- AFNetworking/UIKit (4.0.1):
- AFNetworking/NSURLSession
- AgoraRtcEngine_Special_iOS (3.6.216)
- AMapFoundation (1.8.0)
- AMapSearch (9.5.0):
- AMapFoundation (>= 1.8.0)
- AMap3DMap-NO-IDFA (9.6.0):
- AMapFoundation-NO-IDFA (>= 1.8.0)
- AMapFoundation-NO-IDFA (1.8.2)
- AMapLocation-NO-IDFA (2.10.0):
- AMapFoundation-NO-IDFA (>= 1.8.0)
- AMapSearch-NO-IDFA (9.5.0):
- AMapFoundation-NO-IDFA (>= 1.8.0)
- BRPickerView (2.8.0):
- BRPickerView/AddressPickerView (= 2.8.0)
- BRPickerView/Base (= 2.8.0)
@ -163,7 +167,10 @@ PODS: @@ -163,7 +167,10 @@ PODS:
DEPENDENCIES:
- AgoraRtcEngine_Special_iOS (= 3.6.216)
- AMapSearch
- AMap3DMap-NO-IDFA
- AMapFoundation-NO-IDFA
- AMapLocation-NO-IDFA
- AMapSearch-NO-IDFA
- BRPickerView
- DZNEmptyDataSet
- EasyShowView
@ -195,8 +202,10 @@ SPEC REPOS: @@ -195,8 +202,10 @@ SPEC REPOS:
https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git:
- AFNetworking
- AgoraRtcEngine_Special_iOS
- AMapFoundation
- AMapSearch
- AMap3DMap-NO-IDFA
- AMapFoundation-NO-IDFA
- AMapLocation-NO-IDFA
- AMapSearch-NO-IDFA
- BRPickerView
- DZNEmptyDataSet
- EasyShowView
@ -231,8 +240,10 @@ SPEC REPOS: @@ -231,8 +240,10 @@ SPEC REPOS:
SPEC CHECKSUMS:
AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
AgoraRtcEngine_Special_iOS: 33d17ed6fb49f331977e29293f877ad7054e33c4
AMapFoundation: f48153f724114b58da9b01875ab88a1f6856e3db
AMapSearch: e0c81206b8ac1d27ef349095a96ea6398e3a0da3
AMap3DMap-NO-IDFA: f242be970ea0eb242b27b1f1fb97765832733546
AMapFoundation-NO-IDFA: 6ce0ef596d4eb8d934ff498e56747b6de1247b05
AMapLocation-NO-IDFA: 735791aeb1ba52dff666e4158b86caf4b68b5be7
AMapSearch-NO-IDFA: 10cbd3ad7d122045a0c1f5760f6d46ff576ca918
BRPickerView: a0ff460bf092bc069db5a54153395b1f7e8f5300
DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7
EasyShowView: ec832e175d5926baef413e2dc095fb4ec5c3add4
@ -264,6 +275,6 @@ SPEC CHECKSUMS: @@ -264,6 +275,6 @@ SPEC CHECKSUMS:
YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
ZXNavigationBar: a8ceb13fe37f9ca894cf6ae22d805cbdbb9ad6b1
PODFILE CHECKSUM: efc45cb23901b187037452103d82e1020c9c040d
PODFILE CHECKSUM: de3cddc49abede86664517eb771f1a9b099b68b6
COCOAPODS: 1.12.1

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3d_navi_sky_day.data generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_day.data generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3d_sky_night.data generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

112
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3dlandscape.xml generated

@ -0,0 +1,112 @@ @@ -0,0 +1,112 @@
<Xml>
<XmlVerSion>v1.0</XmlVerSion>
<NavigationParam>
<!--横屏:1-->
<ScreenDirection>1</ScreenDirection>
<!--相机角度多少帧会跟随道路朝向,单位“帧”,10帧/秒-->
<InterpolationFrame>30</InterpolationFrame>
<!--相机默认仰角(20-80)-->
<DefaultTitle>70</DefaultTitle>
<!--相机推近后的到地面的默认初始距离(米)-->
<DefaultCamerah>40</DefaultCamerah>
<!--相机角度前置车标多少米-->
<ForwardDis0>50</ForwardDis0>
<!--相机角度前置车标多少米(针对掉头)-->
<ForwardDis1>10</ForwardDis1>
<!--相机角度不可超出阈值-->
<ForwardDegreeMax>45</ForwardDegreeMax>
<!--距离语音点多少米开始下压,0不检测语音点-->
<DisBeforeSound>100</DisBeforeSound>
<!--走过语音点多少米后开始抬起-->
<DisAfterSound>100</DisAfterSound>
<!--路口三维推近仰角(20-80)-->
<SoundTitle>70</SoundTitle>
<!--相机推近后的到地面的最小距离(米)-->
<SoundCamerah>40</SoundCamerah>
<!--距离Pick点多少米开始下压,0不检测Pick点-->
<DisBeforePick>100</DisBeforePick>
<!--走过Pick点多少米后开始抬起-->
<DisAfterPick>100</DisAfterPick>
<!--Pick推近最小仰角(20-80)-->
<PickTitle>75</PickTitle>
<!--相机推近后的到地面的最小距离(米)-->
<PickCamerah>3.0</PickCamerah>
<!--距离DisBeforePick前的Pick采样间隔(米/帧),实际采样间隔再加上车速-->
<PickInterval>4</PickInterval>
<!--完成下压的限制距离(米)-->
<LimitDis>10</LimitDis>
<!--低速行驶时相机视角是否往回摆-->
<LowSpeedTurnBack>0</LowSpeedTurnBack>
<!--车道切换、主辅路切换角度阀值(度)-->
<LaneSwitchAngle>15</LaneSwitchAngle>
<!--车道切换、主辅路切换中间转弯的方向线长度阀值(米)-->
<LaneSwitchDis>150</LaneSwitchDis>
<!--车道切换、主辅路切换忽略普通线也转弯的长度阀值(米)-->
<LaneSwitchIgnorDis>80</LaneSwitchIgnorDis>
<!--转弯箭头距离车位置多远开始显示-->
<TrunPicMaxDis>250</TrunPicMaxDis>
<!--转弯提示文字距离车位置多远开始不显示-->
<TrunPicMinDis>25</TrunPicMinDis>
<!--转弯提示文字的大小,单位"像素"-->
<TrunPicSize>50</TrunPicSize>
<!--10米比例尺车标宽度,单位"米"-->
<CarWidth>6.5</CarWidth>
<!--车道线宽,单位"米"-->
<RoadLineWidth>7.0</RoadLineWidth>
<!--车道线颜色-->
<LineColorRed>0</LineColorRed>
<LineColorGreen>174</LineColorGreen>
<LineColorBlue>255</LineColorBlue>
<LineColorAlpha>204</LineColorAlpha>
<!--方向线向前长度,单位"米"-->
<LineforwardLength>30</LineforwardLength>
<!--方向线向后长度,单位"米"-->
<LinebackLength>30</LinebackLength>
<!--方向线宽度,单位"米"-->
<LineWidth>7.0</LineWidth>
<!--车道线融合(0-255,0全透,暂无效)-->
<LineAlpha>100</LineAlpha>
</NavigationParam>
<AnimateParam>
<!--二维进入三维,蒙板颜色红色分量[0,255]-->
<ColorInRed>29</ColorInRed>
<!--二维进入三维,蒙板颜色绿色分量[0,255]-->
<ColorInGreed>30</ColorInGreed>
<!--二维进入三维,蒙板颜色蓝色分量[0,255]-->
<ColorInBlue>26</ColorInBlue>
<!--二维动画帧数-->
<FrameIn2d>4</FrameIn2d>
<!--三维动画帧数-->
<FrameIn3d>6</FrameIn3d>
<!--三维退出二维,蒙板颜色红色分量[0,255]-->
<ColorOutRed>29</ColorOutRed>
<!--三维退出二维,蒙板颜色绿色分量[0,255]-->
<ColorOutGreed>30</ColorOutGreed>
<!--三维退出二维,蒙板颜色蓝色分量[0,255]-->
<ColorOutBlue>26</ColorOutBlue>
<!--二维动画帧数-->
<FrameOut2d>2</FrameOut2d>
<!--三维动画帧数-->
<FrameOut3d>3</FrameOut3d>
<!--2d透明度变化范围起始值[0,255]-->
<AlphaBegin2d>60</AlphaBegin2d>
<!--2d透明度变化范围结束值[0,255]-->
<AlphaEnd2d>120</AlphaEnd2d>
<!--透明度变化范围起始值[0,255]-->
<AlphaBegin3d>180</AlphaBegin3d>
<!--透明度变化范围结束值[0,255]-->
<AlphaEnd3d>100</AlphaEnd3d>
</AnimateParam>
</Xml>

112
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/3dportrait.xml generated

@ -0,0 +1,112 @@ @@ -0,0 +1,112 @@
<Xml>
<XmlVerSion>v1.0</XmlVerSion>
<NavigationParam>
<!--竖屏:0-->
<ScreenDirection>0</ScreenDirection>
<!--相机角度多少帧会跟随道路朝向,单位“帧”,10帧/秒-->
<InterpolationFrame>30</InterpolationFrame>
<!--相机默认仰角(20-80)-->
<DefaultTitle>65</DefaultTitle>
<!--相机推近后的到地面的默认初始距离(米)-->
<DefaultCamerah>50</DefaultCamerah>
<!--相机角度前置车标多少米-->
<ForwardDis0>50</ForwardDis0>
<!--相机角度前置车标多少米(针对掉头)-->
<ForwardDis1>10</ForwardDis1>
<!--相机角度不可超出阈值-->
<ForwardDegreeMax>45</ForwardDegreeMax>
<!--距离语音点多少米开始下压,0不检测语音点-->
<DisBeforeSound>100</DisBeforeSound>
<!--走过语音点多少米后开始抬起-->
<DisAfterSound>100</DisAfterSound>
<!--路口三维推近仰角(20-80)-->
<SoundTitle>65</SoundTitle>
<!--相机推近后的到地面的最小距离(米)-->
<SoundCamerah>50</SoundCamerah>
<!--距离Pick点多少米开始下压,0不检测Pick点-->
<DisBeforePick>100</DisBeforePick>
<!--走过Pick点多少米后开始抬起-->
<DisAfterPick>100</DisAfterPick>
<!--Pick推近最小仰角(20-80)-->
<PickTitle>70</PickTitle>
<!--相机推近后的到地面的最小距离(米)-->
<PickCamerah>3.0</PickCamerah>
<!--距离DisBeforePick前的Pick采样间隔(米/帧),实际采样间隔再加上车速-->
<PickInterval>4</PickInterval>
<!--完成下压的限制距离(米)-->
<LimitDis>10</LimitDis>
<!--低速行驶时相机视角是否往回摆-->
<LowSpeedTurnBack>0</LowSpeedTurnBack>
<!--车道切换、主辅路切换角度阀值(度)-->
<LaneSwitchAngle>15</LaneSwitchAngle>
<!--车道切换、主辅路切换中间转弯的方向线长度阀值(米)-->
<LaneSwitchDis>150</LaneSwitchDis>
<!--车道切换、主辅路切换忽略普通线也转弯的长度阀值(米)-->
<LaneSwitchIgnorDis>80</LaneSwitchIgnorDis>
<!--转弯箭头距离车位置多远开始显示-->
<TrunPicMaxDis>250</TrunPicMaxDis>
<!--转弯提示文字距离车位置多远开始不显示-->
<TrunPicMinDis>25</TrunPicMinDis>
<!--转弯提示文字的大小,单位"像素"-->
<TrunPicSize>50</TrunPicSize>
<!--10米比例尺车标宽度,单位"米"-->
<CarWidth>6.5</CarWidth>
<!--车道线宽,单位"米"-->
<RoadLineWidth>7.0</RoadLineWidth>
<!--车道线颜色-->
<LineColorRed>0</LineColorRed>
<LineColorGreen>174</LineColorGreen>
<LineColorBlue>255</LineColorBlue>
<LineColorAlpha>204</LineColorAlpha>
<!--方向线向前长度,单位"米"-->
<LineforwardLength>30</LineforwardLength>
<!--方向线向后长度,单位"米"-->
<LinebackLength>30</LinebackLength>
<!--方向线宽度,单位"米"-->
<LineWidth>7.0</LineWidth>
<!--车道线融合(0-255,0全透,暂无效)-->
<LineAlpha>100</LineAlpha>
</NavigationParam>
<AnimateParam>
<!--二维进入三维,蒙板颜色红色分量[0,255]-->
<ColorInRed>29</ColorInRed>
<!--二维进入三维,蒙板颜色绿色分量[0,255]-->
<ColorInGreed>30</ColorInGreed>
<!--二维进入三维,蒙板颜色蓝色分量[0,255]-->
<ColorInBlue>26</ColorInBlue>
<!--二维动画帧数-->
<FrameIn2d>4</FrameIn2d>
<!--三维动画帧数-->
<FrameIn3d>6</FrameIn3d>
<!--三维退出二维,蒙板颜色红色分量[0,255]-->
<ColorOutRed>29</ColorOutRed>
<!--三维退出二维,蒙板颜色绿色分量[0,255]-->
<ColorOutGreed>30</ColorOutGreed>
<!--三维退出二维,蒙板颜色蓝色分量[0,255]-->
<ColorOutBlue>26</ColorOutBlue>
<!--二维动画帧数-->
<FrameOut2d>2</FrameOut2d>
<!--三维动画帧数-->
<FrameOut3d>3</FrameOut3d>
<!--2d透明度变化范围起始值[0,255]-->
<AlphaBegin2d>60</AlphaBegin2d>
<!--2d透明度变化范围结束值[0,255]-->
<AlphaEnd2d>120</AlphaEnd2d>
<!--透明度变化范围起始值[0,255]-->
<AlphaBegin3d>180</AlphaBegin3d>
<!--透明度变化范围结束值[0,255]-->
<AlphaEnd3d>100</AlphaEnd3d>
</AnimateParam>
</Xml>

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_1.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1015_2.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_1.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 B

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/1016_2.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 B

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_day.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_bk_grass_night.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_day.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/cross_sky_night.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_day_bk.data generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/crossing_nigth_bk.data generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 752 B

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_day.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/d_yellow_night.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
Pods/AMap3DMap-NO-IDFA/MAMapKit.framework/AMap.bundle/AMap3D.bundle/VM3DRes/exit_label_bk_main_day.png generated

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save