瀏覽代碼

아이폰 탈옥 체크 검증 로직 추가

서용하 6 年之前
父節點
當前提交
a603d5df95

+ 126 - 34
MCPlus.xcodeproj/project.pbxproj

@@ -123,6 +123,21 @@
 		294B2B5F220C10B800EABB89 /* PhotoCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B2B5E220C10B800EABB89 /* PhotoCollectionViewCell.swift */; };
 		294B2B60220C10B800EABB89 /* PhotoCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B2B5E220C10B800EABB89 /* PhotoCollectionViewCell.swift */; };
 		294B2B61220C10B800EABB89 /* PhotoCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294B2B5E220C10B800EABB89 /* PhotoCollectionViewCell.swift */; };
+		294CA301225C4C4C00036C7B /* MCareFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 294CA300225C4C4C00036C7B /* MCareFramework.framework */; };
+		294CA302225C4C4C00036C7B /* MCareFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 294CA300225C4C4C00036C7B /* MCareFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		294CA304225C4C7600036C7B /* MCareFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 294CA300225C4C4C00036C7B /* MCareFramework.framework */; };
+		294CA305225C4C7600036C7B /* MCareFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 294CA300225C4C4C00036C7B /* MCareFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		294CA307225C4C7B00036C7B /* MCareFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 294CA300225C4C4C00036C7B /* MCareFramework.framework */; };
+		294CA308225C4C7B00036C7B /* MCareFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 294CA300225C4C4C00036C7B /* MCareFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
+		294CA30B225C4D0500036C7B /* McareCrackCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA30A225C4D0500036C7B /* McareCrackCheck.swift */; };
+		294CA30C225C4D0500036C7B /* McareCrackCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA30A225C4D0500036C7B /* McareCrackCheck.swift */; };
+		294CA30D225C4D0500036C7B /* McareCrackCheck.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA30A225C4D0500036C7B /* McareCrackCheck.swift */; };
+		294CA30F225C4D4200036C7B /* CommonConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA30E225C4D4200036C7B /* CommonConstants.swift */; };
+		294CA310225C4D4200036C7B /* CommonConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA30E225C4D4200036C7B /* CommonConstants.swift */; };
+		294CA311225C4D4200036C7B /* CommonConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA30E225C4D4200036C7B /* CommonConstants.swift */; };
+		294CA313225C4E3300036C7B /* MCareUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA312225C4E3200036C7B /* MCareUtil.swift */; };
+		294CA314225C4E3300036C7B /* MCareUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA312225C4E3200036C7B /* MCareUtil.swift */; };
+		294CA315225C4E3300036C7B /* MCareUtil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294CA312225C4E3200036C7B /* MCareUtil.swift */; };
 		294D03A3223F383C00947992 /* ExtensionUIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294D03A2223F383C00947992 /* ExtensionUIApplication.swift */; };
 		294D03A4223F383C00947992 /* ExtensionUIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294D03A2223F383C00947992 /* ExtensionUIApplication.swift */; };
 		294D03A5223F383C00947992 /* ExtensionUIApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 294D03A2223F383C00947992 /* ExtensionUIApplication.swift */; };
@@ -226,7 +241,7 @@
 		29EDBFFD22015BD900E8D2F5 /* PictureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29EDBFFB22015BD900E8D2F5 /* PictureViewController.swift */; };
 		29EDBFFE22015BD900E8D2F5 /* PictureViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29EDBFFB22015BD900E8D2F5 /* PictureViewController.swift */; };
 		3DF464E36C630C5EDB5EBF06 /* Pods_kunkuk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7ED7F8805F65122CB7864A3D /* Pods_kunkuk.framework */; };
-		8D789571F73322601CDA8B58 /* Pods_MCPlusTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0DE88EDD0CE842D75ED2F587 /* Pods_MCPlusTests.framework */; };
+		E8906594AC49D4BF520990AF /* Pods_MCPlusTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AA72705E92F6D3702212FCCC /* Pods_MCPlusTests.framework */; };
 		FDEAA9545C3A9C068C70416A /* Pods_kunkuk_dev.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E43AB729AC4BD26414F83BE /* Pods_kunkuk_dev.framework */; };
 /* End PBXBuildFile section */
 
@@ -240,10 +255,45 @@
 		};
 /* End PBXContainerItemProxy section */
 
+/* Begin PBXCopyFilesBuildPhase section */
+		294CA303225C4C4C00036C7B /* Embed Frameworks */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+				294CA302225C4C4C00036C7B /* MCareFramework.framework in Embed Frameworks */,
+			);
+			name = "Embed Frameworks";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		294CA306225C4C7700036C7B /* Embed Frameworks */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+				294CA305225C4C7600036C7B /* MCareFramework.framework in Embed Frameworks */,
+			);
+			name = "Embed Frameworks";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		294CA309225C4C7B00036C7B /* Embed Frameworks */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 10;
+			files = (
+				294CA308225C4C7B00036C7B /* MCareFramework.framework in Embed Frameworks */,
+			);
+			name = "Embed Frameworks";
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
 /* Begin PBXFileReference section */
 		0338D53B0C695D3CAFE8AB7B /* Pods-MCPlusTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MCPlusTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MCPlusTests/Pods-MCPlusTests.debug.xcconfig"; sourceTree = "<group>"; };
 		057D96EC072B466A04093712 /* Pods-MCPlus.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MCPlus.release.xcconfig"; path = "Pods/Target Support Files/Pods-MCPlus/Pods-MCPlus.release.xcconfig"; sourceTree = "<group>"; };
-		0DE88EDD0CE842D75ED2F587 /* Pods_MCPlusTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MCPlusTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		0E24E71D0331CFE8D9453DCA /* Pods-kunkuk_dev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kunkuk_dev.debug.xcconfig"; path = "Pods/Target Support Files/Pods-kunkuk_dev/Pods-kunkuk_dev.debug.xcconfig"; sourceTree = "<group>"; };
 		0E43AB729AC4BD26414F83BE /* Pods_kunkuk_dev.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_kunkuk_dev.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		1226348C1DF7EDC300AC54FD /* kunkuk.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = kunkuk.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -272,7 +322,6 @@
 		129D1CB421CB62AD00A9D764 /* CallbackUtil.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CallbackUtil.m; sourceTree = "<group>"; };
 		129D1CE221CB7AF800A9D764 /* kunkuk_inhouse.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = kunkuk_inhouse.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		12FD22531E28FE3000195209 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
-		152B303EA1AB6193CFC90A5F /* Pods_MCPlus.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MCPlus.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		1B4135BA1A2E52E0D69C7248 /* Pods-kunkuk.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kunkuk.release.xcconfig"; path = "Pods/Target Support Files/Pods-kunkuk/Pods-kunkuk.release.xcconfig"; sourceTree = "<group>"; };
 		290A0CED2216461100BEC6C0 /* ExtensionCollection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionCollection.swift; sourceTree = "<group>"; };
 		290D82252235F1F70077B497 /* MCPlusTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MCPlusTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -306,6 +355,10 @@
 		294B2B5A220C0DF400EABB89 /* PhotoCollectionViewReusableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoCollectionViewReusableView.swift; sourceTree = "<group>"; };
 		294B2B5E220C10B800EABB89 /* PhotoCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoCollectionViewCell.swift; sourceTree = "<group>"; };
 		294B7444221A8F9400DEC765 /* disableAttach.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = disableAttach.h; sourceTree = "<group>"; };
+		294CA300225C4C4C00036C7B /* MCareFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MCareFramework.framework; sourceTree = "<group>"; };
+		294CA30A225C4D0500036C7B /* McareCrackCheck.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = McareCrackCheck.swift; sourceTree = "<group>"; };
+		294CA30E225C4D4200036C7B /* CommonConstants.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CommonConstants.swift; sourceTree = "<group>"; };
+		294CA312225C4E3200036C7B /* MCareUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MCareUtil.swift; sourceTree = "<group>"; };
 		294D03A2223F383C00947992 /* ExtensionUIApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionUIApplication.swift; sourceTree = "<group>"; };
 		2960345C2213A719008AB32E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		296034602213D735008AB32E /* ExtensionAppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExtensionAppDelegate.swift; sourceTree = "<group>"; };
@@ -345,13 +398,12 @@
 		29E13DE22202EA220064FECF /* PhotoViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoViewController.swift; sourceTree = "<group>"; };
 		29EDBFF822015BD900E8D2F5 /* MCPlus-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MCPlus-Bridging-Header.h"; sourceTree = "<group>"; };
 		29EDBFFB22015BD900E8D2F5 /* PictureViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PictureViewController.swift; sourceTree = "<group>"; };
-		2FC3570B87F7F35D45361F64 /* Pods_MCPlus_dev.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MCPlus_dev.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		3FAED31BA933FFAB036F1A0F /* Pods-MCPlus_lemon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MCPlus_lemon.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MCPlus_lemon/Pods-MCPlus_lemon.debug.xcconfig"; sourceTree = "<group>"; };
 		4564291D57BC6E8CD63C01FA /* Pods-kunkuk_dev.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kunkuk_dev.release.xcconfig"; path = "Pods/Target Support Files/Pods-kunkuk_dev/Pods-kunkuk_dev.release.xcconfig"; sourceTree = "<group>"; };
 		7CB9530863AD65816086D92C /* Pods-MCPlus_lemon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MCPlus_lemon.release.xcconfig"; path = "Pods/Target Support Files/Pods-MCPlus_lemon/Pods-MCPlus_lemon.release.xcconfig"; sourceTree = "<group>"; };
 		7ED7F8805F65122CB7864A3D /* Pods_kunkuk.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_kunkuk.framework; sourceTree = BUILT_PRODUCTS_DIR; };
-		990859F7DA06D730AA6D6B7E /* Pods_MCPlus_lemon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MCPlus_lemon.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		A376DFB6C6BC907F3BAB8A27 /* Pods-kunkuk.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kunkuk.debug.xcconfig"; path = "Pods/Target Support Files/Pods-kunkuk/Pods-kunkuk.debug.xcconfig"; sourceTree = "<group>"; };
+		AA72705E92F6D3702212FCCC /* Pods_MCPlusTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MCPlusTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		AF995D3B52719358298BE3C6 /* Pods-kunkuk_inhouse.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-kunkuk_inhouse.release.xcconfig"; path = "Pods/Target Support Files/Pods-kunkuk_inhouse/Pods-kunkuk_inhouse.release.xcconfig"; sourceTree = "<group>"; };
 		CCED450637265374EE92812B /* Pods-MCPlus.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MCPlus.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MCPlus/Pods-MCPlus.debug.xcconfig"; sourceTree = "<group>"; };
 		D1B3C22B818A3E893C66D6F1 /* Pods-MCPlus_dev.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MCPlus_dev.debug.xcconfig"; path = "Pods/Target Support Files/Pods-MCPlus_dev/Pods-MCPlus_dev.debug.xcconfig"; sourceTree = "<group>"; };
@@ -370,6 +422,7 @@
 				2934DFBC223B318D00184ACD /* CoreNFC.framework in Frameworks */,
 				126F0F342119709C00AA6C0B /* QuartzCore.framework in Frameworks */,
 				126F0F322119709400AA6C0B /* CoreVideo.framework in Frameworks */,
+				294CA301225C4C4C00036C7B /* MCareFramework.framework in Frameworks */,
 				126F0F302119708B00AA6C0B /* CoreMedia.framework in Frameworks */,
 				126F0F2E2119708200AA6C0B /* AVFoundation.framework in Frameworks */,
 				12298E5C20B67AEF0047B9A1 /* LocalAuthentication.framework in Frameworks */,
@@ -385,6 +438,7 @@
 				2934DFC6223B320400184ACD /* AVFoundation.framework in Frameworks */,
 				2934DFC4223B31EE00184ACD /* CoreMedia.framework in Frameworks */,
 				2934DFC1223B31D200184ACD /* CoreVideo.framework in Frameworks */,
+				294CA304225C4C7600036C7B /* MCareFramework.framework in Frameworks */,
 				2934DFC0223B31CA00184ACD /* QuartzCore.framework in Frameworks */,
 				2934DFBD223B319900184ACD /* CoreNFC.framework in Frameworks */,
 				294B2B4C220BDCF400EABB89 /* libsqlite3.tbd in Frameworks */,
@@ -400,6 +454,7 @@
 				2934DFC7223B320A00184ACD /* AVFoundation.framework in Frameworks */,
 				2934DFC5223B31F600184ACD /* CoreMedia.framework in Frameworks */,
 				2934DFC3223B31E000184ACD /* CoreVideo.framework in Frameworks */,
+				294CA307225C4C7B00036C7B /* MCareFramework.framework in Frameworks */,
 				2934DFC2223B31D800184ACD /* QuartzCore.framework in Frameworks */,
 				2934DFBF223B31BB00184ACD /* libsqlite3.tbd in Frameworks */,
 				293A3ED022004B6A0099E986 /* CoreNFC.framework in Frameworks */,
@@ -411,7 +466,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				8D789571F73322601CDA8B58 /* Pods_MCPlusTests.framework in Frameworks */,
+				E8906594AC49D4BF520990AF /* Pods_MCPlusTests.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -442,6 +497,7 @@
 		122634831DF7EDC300AC54FD = {
 			isa = PBXGroup;
 			children = (
+				294CA300225C4C4C00036C7B /* MCareFramework.framework */,
 				297F1F8422012D5000F69EA3 /* MCPlus.entitlements */,
 				297F1F8522012E0600F69EA3 /* MCPlus_dev.entitlements */,
 				293A3ECE220048D20099E986 /* MCPlus_lemon.entitlements */,
@@ -476,10 +532,12 @@
 				122634AC1DF7FE6700AC54FD /* Network */,
 				1226348F1DF7EDC300AC54FD /* Supporting Files */,
 				122E98351DFE6193009FB76E /* Utils */,
+				294CA312225C4E3200036C7B /* MCareUtil.swift */,
 				122E98391DFE8E1A009FB76E /* ViewControllers */,
 				1226349E1DF7EDC300AC54FD /* Assets.xcassets */,
 				126F40351E1F369C002E691B /* Images.xcassets */,
 				2960345C2213A719008AB32E /* AppDelegate.swift */,
+				294CA30A225C4D0500036C7B /* McareCrackCheck.swift */,
 				122634A01DF7EDC300AC54FD /* LaunchScreen.storyboard */,
 				122634981DF7EDC300AC54FD /* Main.storyboard */,
 				1226349B1DF7EDC300AC54FD /* MCPlus.xcdatamodeld */,
@@ -503,6 +561,7 @@
 			children = (
 				296034682213F2EE008AB32E /* Constants.swift */,
 				2960346E2213FAE7008AB32E /* MCarePlusConstantsProtocol.swift */,
+				294CA30E225C4D4200036C7B /* CommonConstants.swift */,
 			);
 			path = Constants;
 			sourceTree = "<group>";
@@ -696,13 +755,10 @@
 				126F0F2F2119708B00AA6C0B /* CoreMedia.framework */,
 				126F0F2D2119708200AA6C0B /* AVFoundation.framework */,
 				12298E5B20B67AEF0047B9A1 /* LocalAuthentication.framework */,
-				152B303EA1AB6193CFC90A5F /* Pods_MCPlus.framework */,
-				0DE88EDD0CE842D75ED2F587 /* Pods_MCPlusTests.framework */,
-				2FC3570B87F7F35D45361F64 /* Pods_MCPlus_dev.framework */,
-				990859F7DA06D730AA6D6B7E /* Pods_MCPlus_lemon.framework */,
 				7ED7F8805F65122CB7864A3D /* Pods_kunkuk.framework */,
 				0E43AB729AC4BD26414F83BE /* Pods_kunkuk_dev.framework */,
 				F846E0411AC40A18E1BEEE2B /* Pods_kunkuk_inhouse.framework */,
+				AA72705E92F6D3702212FCCC /* Pods_MCPlusTests.framework */,
 			);
 			name = Frameworks;
 			sourceTree = "<group>";
@@ -720,6 +776,7 @@
 				1226348A1DF7EDC300AC54FD /* Resources */,
 				1288CBDF1E36F2500069AA08 /* ShellScript */,
 				966329A9C61DC20BFAAD0320 /* [CP] Embed Pods Frameworks */,
+				294CA303225C4C4C00036C7B /* Embed Frameworks */,
 			);
 			buildRules = (
 			);
@@ -740,6 +797,7 @@
 				12418E851E54118E00F73F12 /* Resources */,
 				12418E8C1E54118E00F73F12 /* ShellScript */,
 				1F32999895B45C05517BCFE3 /* [CP] Embed Pods Frameworks */,
+				294CA306225C4C7700036C7B /* Embed Frameworks */,
 			);
 			buildRules = (
 			);
@@ -760,6 +818,7 @@
 				129D1CD321CB7AF800A9D764 /* Resources */,
 				129D1CDD21CB7AF800A9D764 /* ShellScript */,
 				0B7B1A054A85AD1E8F026278 /* [CP] Embed Pods Frameworks */,
+				294CA309225C4C7B00036C7B /* Embed Frameworks */,
 			);
 			buildRules = (
 			);
@@ -928,12 +987,12 @@
 			);
 			inputPaths = (
 				"${PODS_ROOT}/Target Support Files/Pods-kunkuk_inhouse/Pods-kunkuk_inhouse-frameworks.sh",
-				"${BUILT_PRODUCTS_DIR}/Alamofire-iOS9.0/Alamofire.framework",
-				"${BUILT_PRODUCTS_DIR}/RNCryptor-iOS9.0/RNCryptor.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa-iOS9.0/ReactiveCocoa.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveSwift-iOS9.0/ReactiveSwift.framework",
-				"${BUILT_PRODUCTS_DIR}/Result-iOS9.0/Result.framework",
-				"${BUILT_PRODUCTS_DIR}/ZBarSDK-iOS9.0/ZBarSDK.framework",
+				"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+				"${BUILT_PRODUCTS_DIR}/RNCryptor/RNCryptor.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa/ReactiveCocoa.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveSwift/ReactiveSwift.framework",
+				"${BUILT_PRODUCTS_DIR}/Result/Result.framework",
+				"${BUILT_PRODUCTS_DIR}/ZBarSDK/ZBarSDK.framework",
 			);
 			name = "[CP] Embed Pods Frameworks";
 			outputFileListPaths = (
@@ -1002,12 +1061,12 @@
 			);
 			inputPaths = (
 				"${PODS_ROOT}/Target Support Files/Pods-kunkuk_dev/Pods-kunkuk_dev-frameworks.sh",
-				"${BUILT_PRODUCTS_DIR}/Alamofire-iOS9.0/Alamofire.framework",
-				"${BUILT_PRODUCTS_DIR}/RNCryptor-iOS9.0/RNCryptor.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa-iOS9.0/ReactiveCocoa.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveSwift-iOS9.0/ReactiveSwift.framework",
-				"${BUILT_PRODUCTS_DIR}/Result-iOS9.0/Result.framework",
-				"${BUILT_PRODUCTS_DIR}/ZBarSDK-iOS9.0/ZBarSDK.framework",
+				"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+				"${BUILT_PRODUCTS_DIR}/RNCryptor/RNCryptor.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa/ReactiveCocoa.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveSwift/ReactiveSwift.framework",
+				"${BUILT_PRODUCTS_DIR}/Result/Result.framework",
+				"${BUILT_PRODUCTS_DIR}/ZBarSDK/ZBarSDK.framework",
 			);
 			name = "[CP] Embed Pods Frameworks";
 			outputFileListPaths = (
@@ -1074,12 +1133,12 @@
 			);
 			inputPaths = (
 				"${PODS_ROOT}/Target Support Files/Pods-kunkuk/Pods-kunkuk-frameworks.sh",
-				"${BUILT_PRODUCTS_DIR}/Alamofire-iOS9.0/Alamofire.framework",
-				"${BUILT_PRODUCTS_DIR}/RNCryptor-iOS9.0/RNCryptor.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa-iOS9.0/ReactiveCocoa.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveSwift-iOS9.0/ReactiveSwift.framework",
-				"${BUILT_PRODUCTS_DIR}/Result-iOS9.0/Result.framework",
-				"${BUILT_PRODUCTS_DIR}/ZBarSDK-iOS9.0/ZBarSDK.framework",
+				"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+				"${BUILT_PRODUCTS_DIR}/RNCryptor/RNCryptor.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa/ReactiveCocoa.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveSwift/ReactiveSwift.framework",
+				"${BUILT_PRODUCTS_DIR}/Result/Result.framework",
+				"${BUILT_PRODUCTS_DIR}/ZBarSDK/ZBarSDK.framework",
 			);
 			name = "[CP] Embed Pods Frameworks";
 			outputFileListPaths = (
@@ -1106,12 +1165,12 @@
 			);
 			inputPaths = (
 				"${PODS_ROOT}/Target Support Files/Pods-MCPlusTests/Pods-MCPlusTests-frameworks.sh",
-				"${BUILT_PRODUCTS_DIR}/Alamofire-iOS12.1/Alamofire.framework",
-				"${BUILT_PRODUCTS_DIR}/RNCryptor-iOS12.1/RNCryptor.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa-iOS12.1/ReactiveCocoa.framework",
-				"${BUILT_PRODUCTS_DIR}/ReactiveSwift-iOS12.1/ReactiveSwift.framework",
-				"${BUILT_PRODUCTS_DIR}/Result-iOS12.1/Result.framework",
-				"${BUILT_PRODUCTS_DIR}/ZBarSDK-iOS12.1/ZBarSDK.framework",
+				"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+				"${BUILT_PRODUCTS_DIR}/RNCryptor/RNCryptor.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveCocoa/ReactiveCocoa.framework",
+				"${BUILT_PRODUCTS_DIR}/ReactiveSwift/ReactiveSwift.framework",
+				"${BUILT_PRODUCTS_DIR}/Result/Result.framework",
+				"${BUILT_PRODUCTS_DIR}/ZBarSDK/ZBarSDK.framework",
 			);
 			name = "[CP] Embed Pods Frameworks";
 			outputFileListPaths = (
@@ -1190,8 +1249,11 @@
 				29213687224082F5001AF1FE /* mockScreenLockViewController.swift in Sources */,
 				296034732213FC3F008AB32E /* MCarePlusConstants.swift in Sources */,
 				294B2B48220BDCCD00EABB89 /* FMResultSet.m in Sources */,
+				294CA30F225C4D4200036C7B /* CommonConstants.swift in Sources */,
+				294CA30B225C4D0500036C7B /* McareCrackCheck.swift in Sources */,
 				29BD47C12201690100D7716E /* ExtensionDispatchQueue.swift in Sources */,
 				29BD47D02201690200D7716E /* ExtensionUIViewController.swift in Sources */,
+				294CA313225C4E3300036C7B /* MCareUtil.swift in Sources */,
 				296506982214EAC200FF4000 /* PACS.swift in Sources */,
 				294B2B57220BE2BB00EABB89 /* SqlClient.swift in Sources */,
 				293E54802202D68200BFDB82 /* CustomCameraViewController.swift in Sources */,
@@ -1259,6 +1321,7 @@
 				29BD47CB2201690200D7716E /* ExtensionUIScrollView.swift in Sources */,
 				290A0CEF2216461100BEC6C0 /* ExtensionCollection.swift in Sources */,
 				296506A12215088E00FF4000 /* LockScreenDAO.swift in Sources */,
+				294CA30C225C4D0500036C7B /* McareCrackCheck.swift in Sources */,
 				294B2B43220BDCCD00EABB89 /* FMDatabase.m in Sources */,
 				29BD47AD2201690100D7716E /* ExtensionUiView.swift in Sources */,
 				29BD47B62201690100D7716E /* ExtensionUIColor.swift in Sources */,
@@ -1271,6 +1334,7 @@
 				294B2B40220BDCCD00EABB89 /* FMDatabaseAdditions.m in Sources */,
 				296034662213E98E008AB32E /* APIClient.swift in Sources */,
 				29BD47B32201690100D7716E /* ExtensionString.swift in Sources */,
+				294CA310225C4D4200036C7B /* CommonConstants.swift in Sources */,
 				2994612B220C17FB00CF3B54 /* PhotoDetailViewController.swift in Sources */,
 				129D1CB621CB62AD00A9D764 /* CallbackUtil.m in Sources */,
 				296034702213FAE7008AB32E /* MCarePlusConstantsProtocol.swift in Sources */,
@@ -1289,6 +1353,7 @@
 				296034622213D735008AB32E /* ExtensionAppDelegate.swift in Sources */,
 				294B2B46220BDCCD00EABB89 /* FMDatabasePool.m in Sources */,
 				294B2B5C220C0DF400EABB89 /* PhotoCollectionViewReusableView.swift in Sources */,
+				294CA314225C4E3300036C7B /* MCareUtil.swift in Sources */,
 				29BD47D42201690200D7716E /* ExtensionCustomStringConvertible.swift in Sources */,
 				29BD47A42201690100D7716E /* ExtensionNotification.swift in Sources */,
 				29EDBFFD22015BD900E8D2F5 /* PictureViewController.swift in Sources */,
@@ -1320,6 +1385,7 @@
 				29BD47AE2201690100D7716E /* ExtensionUiView.swift in Sources */,
 				290A0CF02216461100BEC6C0 /* ExtensionCollection.swift in Sources */,
 				296506A22215088E00FF4000 /* LockScreenDAO.swift in Sources */,
+				294CA30D225C4D0500036C7B /* McareCrackCheck.swift in Sources */,
 				294B2B44220BDCCD00EABB89 /* FMDatabase.m in Sources */,
 				29BD47B72201690100D7716E /* ExtensionUIColor.swift in Sources */,
 				29BD47A82201690100D7716E /* ExtensionUIImageView.swift in Sources */,
@@ -1332,6 +1398,7 @@
 				296034672213E98E008AB32E /* APIClient.swift in Sources */,
 				29BD47B42201690100D7716E /* ExtensionString.swift in Sources */,
 				29AB5ECE2238B15E00F8B219 /* MCarePlusConstants-inHouse.swift in Sources */,
+				294CA311225C4D4200036C7B /* CommonConstants.swift in Sources */,
 				2994612C220C17FB00CF3B54 /* PhotoDetailViewController.swift in Sources */,
 				129D1CCA21CB7AF800A9D764 /* CallbackUtil.m in Sources */,
 				296034712213FAE7008AB32E /* MCarePlusConstantsProtocol.swift in Sources */,
@@ -1350,6 +1417,7 @@
 				296034632213D735008AB32E /* ExtensionAppDelegate.swift in Sources */,
 				294B2B47220BDCCD00EABB89 /* FMDatabasePool.m in Sources */,
 				294B2B5D220C0DF400EABB89 /* PhotoCollectionViewReusableView.swift in Sources */,
+				294CA315225C4E3300036C7B /* MCareUtil.swift in Sources */,
 				29BD47D52201690200D7716E /* ExtensionCustomStringConvertible.swift in Sources */,
 				29BD47A52201690100D7716E /* ExtensionNotification.swift in Sources */,
 				29EDBFFE22015BD900E8D2F5 /* PictureViewController.swift in Sources */,
@@ -1523,6 +1591,10 @@
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = 7W97E82MGQ;
 				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/MCPlus/CustomFiles/kunkuk/info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1552,6 +1624,10 @@
 				CODE_SIGN_STYLE = Automatic;
 				DEVELOPMENT_TEAM = 7W97E82MGQ;
 				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/MCPlus/CustomFiles/kunkuk/info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1580,6 +1656,10 @@
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = 7W97E82MGQ;
 				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/MCPlus/CustomFiles/kunkuk/info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1609,6 +1689,10 @@
 				CODE_SIGN_STYLE = Automatic;
 				DEVELOPMENT_TEAM = 7W97E82MGQ;
 				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/MCPlus/CustomFiles/kunkuk/info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1635,6 +1719,10 @@
 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
 				DEVELOPMENT_TEAM = 7W97E82MGQ;
 				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/MCPlus/CustomFiles/kunkuk/info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
@@ -1661,6 +1749,10 @@
 				CODE_SIGN_ENTITLEMENTS = MCPlus_lemon.entitlements;
 				DEVELOPMENT_TEAM = 7W97E82MGQ;
 				ENABLE_BITCODE = NO;
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)",
+				);
 				INFOPLIST_FILE = "$(SRCROOT)/MCPlus/CustomFiles/kunkuk/info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 9.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";

+ 0 - 5
MCPlus.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict/>
-</plist>

+ 41 - 4
MCPlus/AppDelegate.swift

@@ -13,6 +13,7 @@ import CoreNFC
 import ReplayKit
 import Fabric
 import Crashlytics
+import MCareFramework
 
 @UIApplicationMain
 class AppDelegate: UIResponder, UIApplicationDelegate {
@@ -54,6 +55,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
         
         self.versionCheck()
         
+        
         if let nav = self.window?.rootViewController as? UINavigationController{
             nav.delegate = self
         }
@@ -175,12 +177,12 @@ extension AppDelegate{
                 }
                 
                 if #available(iOS 10.0, *) {
+                    
                     UIApplication.shared.open(url, options: [UIApplication.OpenExternalURLOptionsKey : Any](), completionHandler: nil)
                 }else{
                     UIApplication.shared.openURL(url)
                 }
                 
-                exit(0)
                 }, { [weak self](action) in
                     //취소 누름
                     self?.showAlertWithTag(tag: .CANCEL)
@@ -207,9 +209,9 @@ extension AppDelegate{
             .connect { [weak self](result:[String:Any]) in
                 
                 guard let info = Bundle.main.infoDictionary, let currentVersionString = info["CFBundleShortVersionString"] as? String, let currentVersion = Float(currentVersionString) else{ return }
-
+                
                 let versionOrder = result["versionOrder"] as? Float ?? 0
-
+                
                 if versionOrder > currentVersion{
                     // 업데이트 필요
                     self?.resURL = result["marketUrl"] as? String
@@ -217,9 +219,44 @@ extension AppDelegate{
                 }else{
                     print("최신 버전이 설치되어 있음.")
                 }
+                self?.checkiOSRooting()
             }
-        }
+    }
 
+    //MARK: = RootingCheck
+    func checkiOSRooting() {
+        
+        let rootingCheck:MCareRootingCheck = MCareRootingCheck.init()
+        let crackCehck:McareCrackCheck = McareCrackCheck.init()
+        
+        //폰이 루팅 되어 있는지 체크한다.
+        if rootingCheck.isIOSRooting() {
+            let rootingMsg:String = NSLocalizedString("RootingWarnningMessage", comment: "루팅폰은 지원하지 않습니다.")
+            let rootingTitle:String = NSLocalizedString("AlertTitleWarnning", comment: "경고")
+            
+            MCareUtil.shared.showCustomAlert(title: rootingTitle, message: rootingMsg, firstBtnTitle: NSLocalizedString("AlertClose", comment: "닫기"), secondBtnTitle: nil, titleIcon: MCarePlusConstants.MCARE_ALERT_TITLE_ICON, firstBtnAction: nil, secondBtnAction: nil)
+            
+            
+            DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
+                exit(0)
+            }
+        }
+        
+        let crackResult:String = crackCehck.isCrack()
+        
+        //크랙 여부를 체크한다.
+        if !crackResult.isEqualToString(find: CommonConstants.CRACK_CODE_1001) {
+            var crackMsg:String = NSLocalizedString("CrackWarnningMessage", comment: "앱이 크랙되어 실행할수 없습니다.")
+            crackMsg = crackMsg.appending("\n").appending(crackResult)
+            let crackTitle:String = NSLocalizedString("AlertTitleWarnning", comment: "경고")
+            
+            MCareUtil.shared.showCustomAlert(title: crackTitle, message: crackMsg, firstBtnTitle: NSLocalizedString("AlertClose", comment: "닫기"), secondBtnTitle: nil, titleIcon: MCarePlusConstants.MCARE_ALERT_TITLE_ICON, firstBtnAction: nil, secondBtnAction: nil)
+            
+            DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
+                exit(0)
+            }
+        }
+    }
 }
 
 extension AppDelegate:UINavigationControllerDelegate{

+ 44 - 0
MCPlus/Constants/CommonConstants.swift

@@ -0,0 +1,44 @@
+//
+//  CommonConstants.swift
+//  mcare-demo
+//
+//  Created by KangSH on 2019. 2. 15..
+//  Copyright © 2019년 LemonHealthcare. All rights reserved.
+//  공통상수 모음.
+
+import Foundation
+
+struct CommonConstants {
+
+    //Fido RP 주소
+    static let MCARE_RP_URL:String = "http://dev.lemonhc.com/auth-server/rp/"
+    static let NEXSIGN_URL:String  = "https://ncp-nexsign.samsungsds.com/nexsign-server/"
+    
+    //MCare NiceApp 정보
+    static let MCARE_PAYMENT_NICE_APP_CARD_SCHEME       = "niceappcard://%@?"
+    static let MCARE_PAYMENT_NICE_APP_OPEN_PAYMENT      = "payment"
+    static let MCARE_PAYMENT_NICE_APP_OPEN_MAIN         = "main"
+    static let MCARE_PAYMENT_NICE_APP_CARD_KEY          = "niceappcardswallet"
+    
+    //MCare Error RetryType
+    static let MCARE_RETRY_TYPE_DEFAULT = "DefaultRetry"
+    static let MCARE_RETRY_TYPE_REQUEST = "RequestRetry"
+    
+    //ViewTag
+    static let TOOLBAR_FIXIEDSPACE_TAG:Int  = 128
+    static let TOOLBAR_BTNWIDTH:Float       = 44.0
+    static let BACK_BTN_TAG:Int             = 40
+    static let NEXT_BTN_TAG:Int             = 41
+    static let REFRESH_BTN_TAG:Int          = 42
+    static let CLOSE_BTN_TAG:Int            = 43
+    static let CUSTOM_ALERT_VIEW_TAG:Int    = 9999
+    
+    static let CRACK_CODE_1001  = "1001"
+    static let CRACK_CODE_1002  = "1002"
+    static let CRACK_CODE_1003  = "1003"
+    static let CRACK_CODE_1004  = "1004"
+    static let CRACK_CODE_1005  = "1005"
+    static let CRACK_CODE_1006  = "1006"
+    static let CRACK_CODE_1007  = "1007"
+}
+

+ 2 - 0
MCPlus/Constants/MCarePlusConstantsProtocol.swift

@@ -9,7 +9,9 @@
 import Foundation
 
 protocol MCarePlusConstantsProtocol {
+    static var MCARE_ALERT_TITLE_ICON:String{ get }
     static var DOMAIN_NAME:String{ get }
     static var CERT_TYPE:String{ get }
     static var APP_NAME:String{ get }
 }
+

+ 1 - 0
MCPlus/CustomFiles/kunkuk/MCarePlusConstants-dev.swift

@@ -14,6 +14,7 @@ class MCarePlusConstants:NSObject, MCarePlusConstantsProtocol {
     //건국대 운영용 :https://nps.kuh.ac.kr/mcare-plus/login.page
     //건국대 개발용 :https://nps.kuh.ac.kr/mcare-plus-dev/login.page
     //사내 개발 테스트용 :http://192.168.1.18:48080/mcare-plus/login.page
+    static var MCARE_ALERT_TITLE_ICON = "iconImage-kunkuk"
     static var DOMAIN_NAME = "https://nps.kuh.ac.kr/"
     static var CERT_TYPE = "inHouse"
     static var APP_NAME = "mcare-plus-dev"

+ 1 - 0
MCPlus/CustomFiles/kunkuk/MCarePlusConstants-inHouse.swift

@@ -14,6 +14,7 @@ class MCarePlusConstants:NSObject, MCarePlusConstantsProtocol {
     //건국대 운영용 :https://nps.kuh.ac.kr/mcare-plus/login.page
     //건국대 개발용 :https://nps.kuh.ac.kr/mcare-plus-dev/login.page
     //사내 개발 테스트용 :http://192.168.1.18:48080/mcare-plus/login.page
+    static var MCARE_ALERT_TITLE_ICON = "iconImage-kunkuk"
     static var DOMAIN_NAME = "http://192.168.1.18:48080/"
     static var CERT_TYPE = "inHouse"
     static var APP_NAME = "mcare-plus"

+ 1 - 0
MCPlus/CustomFiles/kunkuk/MCarePlusConstants.swift

@@ -10,6 +10,7 @@ import Foundation
 
 @objcMembers
 class MCarePlusConstants:NSObject, MCarePlusConstantsProtocol {
+    static var MCARE_ALERT_TITLE_ICON = "iconImage-kunkuk"
     static var DOMAIN_NAME = "https://nps.kuh.ac.kr/"
     static var CERT_TYPE = "inHouse"
     static var APP_NAME = "mcare-plus"

+ 21 - 0
MCPlus/Images.xcassets/iconImage-kunkuk.imageset/Contents.json

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

二進制
MCPlus/Images.xcassets/iconImage-kunkuk.imageset/Icon-App-60x60@3x-1.png


+ 102 - 0
MCPlus/MCareUtil.swift

@@ -0,0 +1,102 @@
+//
+//  MCareUtil.swift
+//  mcare-demo-InHouse
+//
+//  Created by SungWon Lee on 27/10/2018.
+//  Copyright © 2018 LemonHealthcare. All rights reserved.
+//
+
+import Foundation
+import MCareFramework
+
+class MCareUtil {
+    static let shared = MCareUtil()
+    
+    private init() {}
+    
+    // 커스텀 알림창을 띄워준다.(중복해서 띄워주기 싫은 알림창은 Tag를 지정)
+    func showCustomAlert(viewTag: Int = 0, title: String?, message: String, firstBtnTitle: String, secondBtnTitle: String?, titleIcon: String?, firstBtnAction: (() -> Void)?, secondBtnAction: (() -> Void)?) {
+        DispatchQueue.main.async {
+            // viewTag가 0이 아니고 뷰가 떠있으면 다시 띄워주지 않음
+            if viewTag != 0 && self.isViewWithTag(tag: viewTag) {
+                return
+            }
+            
+            var alertTitle: String? = title
+            if alertTitle == nil {
+                alertTitle = Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String ?? ""
+            }
+            let alertView: MCareCustomAlerview = MCareCustomAlerview(viewTag: viewTag, title: alertTitle, message: message, firstBtnTitle: firstBtnTitle, secondBtnTitle: secondBtnTitle, titleIcon: titleIcon, firstBtnAction: { () -> Void in
+                // firstbutton click handler
+                if let _firstButtonAction = firstBtnAction {
+                    _firstButtonAction()
+                }
+                
+            }, secondBtnAction: { () -> Void in
+                // handler
+                if let _secondButtonAction = secondBtnAction {
+                    _secondButtonAction()
+                }
+            })
+            alertView.show()
+        }
+    }
+    
+    // 뷰 태크로 해당 뷰가 뷰 히어라키에 존재하는지 찾는다.
+    func isViewWithTag(tag: Int) -> Bool {
+    
+        guard let topView = UIApplication.shared.keyWindow?.subviews[0] else {
+            return false
+        }
+        
+        var result: Bool = false
+        for item in topView.subviews {
+            if item.tag == tag {
+                result = true
+                break
+            }
+        }
+        
+        return result
+    }
+    
+    //MARK: =최상위 ViewController 반환
+    func topViewController() -> UIViewController? {
+        
+        let appDelegate:AppDelegate = UIApplication.shared.delegate as! AppDelegate
+        
+        guard var vc = appDelegate.window?.rootViewController else { return nil }
+        
+        while let presentedViewController = vc.presentedViewController {
+            vc = presentedViewController
+        }
+        
+        return vc
+    }
+    
+    //MARK: =앱을 종료 처리
+    func exitApplication(alertMessage: String?) {
+        var alertMsg:String
+        if let _alertMessage = alertMessage {
+            alertMsg = _alertMessage + "\n" + NSLocalizedString("MCareExitMSG", comment: "앱이 종료됩니다.")
+        }
+        else {
+            alertMsg = NSLocalizedString("MCareExitMSG", comment: "앱이 종료됩니다.")
+        }
+        
+        let alertBtnTitle = NSLocalizedString("AlertOK", comment: "확인")
+        
+        showCustomAlert(title: nil, message: alertMsg, firstBtnTitle: alertBtnTitle, secondBtnTitle: nil, titleIcon: MCarePlusConstants.MCARE_ALERT_TITLE_ICON, firstBtnAction: { () -> Void in
+            DispatchQueue.main.async {
+                exit(0)
+            }
+        }, secondBtnAction: nil)
+    }
+    
+}
+
+extension Optional where Wrapped == String {
+    var isNilOrEmpty: Bool {
+        return self?.trimmingCharacters(in: .whitespaces).isEmpty ?? true
+    }
+}

+ 104 - 0
MCPlus/McareCrackCheck.swift

@@ -0,0 +1,104 @@
+//
+//  McareCrackCheck.swift
+//  MCareSwift
+//
+//  Created by heesungkim on 2017. 2. 14..
+//  Copyright © 2017년 idatabank. All rights reserved.
+//
+
+import Foundation
+import MCareFramework
+
+class McareCrackCheck {
+    
+    private let bundlePath:String = Bundle.main.bundlePath
+    private var mcareLog:MCareLogger?
+    
+    public init(){
+        mcareLog = MCareLogger.sharedInstance()
+    }
+    
+    func isCrack() -> String {
+        
+        var isCrack = false
+        var result:String = ""
+        
+        if self.checkInfoFile() {
+            isCrack = true
+            result = result.appending(", ").appending(CommonConstants.CRACK_CODE_1002)
+        }
+        
+        if self.checkPid() {
+            isCrack = true
+            result = result.appending(", ").appending(CommonConstants.CRACK_CODE_1003)
+        }
+        
+        if self.checkPiratNameCodeSignature() {
+            isCrack = true
+            result = result.appending(", ").appending(CommonConstants.CRACK_CODE_1004)
+        }
+        
+        if self.checkPiratNameCodeResource() {
+            isCrack = true
+            result = result.appending(", ").appending(CommonConstants.CRACK_CODE_1005)
+        }
+
+        if isCrack {
+            result = result.substring(from: result.index(result.startIndex, offsetBy: 2))
+        }
+        else {
+            result = result.appending(CommonConstants.CRACK_CODE_1001)
+        }
+        
+        return result
+    }
+    
+    func checkInfoFile() -> Bool {
+        return true
+        let path:String = self.bundlePath.appending("/Info.plist")
+        let fileInfo:NSDictionary = Bundle.main.infoDictionary! as NSDictionary
+        let fileManager:FileManager = FileManager.default
+        var fileAttr:NSDictionary!
+        
+        do {
+            fileAttr = try fileManager.attributesOfItem(atPath: path) as NSDictionary
+        } catch {
+            mcareLog?.error(output:"")
+        }
+        
+        if fileAttr != nil {
+            let cSIDArr = ["Si", "gne", "rIde", "ntity"]
+            let cSID:String = cSIDArr.joined()
+            
+            if fileInfo.value(forKey: cSID) != nil {
+                return true
+            }
+        }
+        return false
+    }
+    
+    func checkPid() -> Bool {
+        let root:Int = Int(getpid())
+        if root <= 10 {
+            return true
+        }
+        return false
+    }
+    
+    func checkPiratNameCodeSignature() -> Bool {
+        let fileExists:Bool = FileManager.default.fileExists(atPath: bundlePath.appending("/_CodeSignature"))
+        if !fileExists {
+            return true
+        }
+        return false
+    }
+    
+    func checkPiratNameCodeResource() -> Bool {
+        let fileExists:Bool = FileManager.default.fileExists(atPath: bundlePath.appending("/_CodeSignature/CodeResources"))
+        if !fileExists {
+            return true
+        }
+        return false
+    }
+    
+}

+ 289 - 0
MCareFramework.framework/Headers/MCareFramework-Swift.h

@@ -0,0 +1,289 @@
+// Generated by Apple Swift version 4.2.1 (swiftlang-1000.11.42 clang-1000.11.45.1)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wgcc-compat"
+
+#if !defined(__has_include)
+# define __has_include(x) 0
+#endif
+#if !defined(__has_attribute)
+# define __has_attribute(x) 0
+#endif
+#if !defined(__has_feature)
+# define __has_feature(x) 0
+#endif
+#if !defined(__has_warning)
+# define __has_warning(x) 0
+#endif
+
+#if __has_include(<swift/objc-prologue.h>)
+# include <swift/objc-prologue.h>
+#endif
+
+#pragma clang diagnostic ignored "-Wauto-import"
+#include <objc/NSObject.h>
+#include <stdint.h>
+#include <stddef.h>
+#include <stdbool.h>
+
+#if !defined(SWIFT_TYPEDEFS)
+# define SWIFT_TYPEDEFS 1
+# if __has_include(<uchar.h>)
+#  include <uchar.h>
+# elif !defined(__cplusplus)
+typedef uint_least16_t char16_t;
+typedef uint_least32_t char32_t;
+# endif
+typedef float swift_float2  __attribute__((__ext_vector_type__(2)));
+typedef float swift_float3  __attribute__((__ext_vector_type__(3)));
+typedef float swift_float4  __attribute__((__ext_vector_type__(4)));
+typedef double swift_double2  __attribute__((__ext_vector_type__(2)));
+typedef double swift_double3  __attribute__((__ext_vector_type__(3)));
+typedef double swift_double4  __attribute__((__ext_vector_type__(4)));
+typedef int swift_int2  __attribute__((__ext_vector_type__(2)));
+typedef int swift_int3  __attribute__((__ext_vector_type__(3)));
+typedef int swift_int4  __attribute__((__ext_vector_type__(4)));
+typedef unsigned int swift_uint2  __attribute__((__ext_vector_type__(2)));
+typedef unsigned int swift_uint3  __attribute__((__ext_vector_type__(3)));
+typedef unsigned int swift_uint4  __attribute__((__ext_vector_type__(4)));
+#endif
+
+#if !defined(SWIFT_PASTE)
+# define SWIFT_PASTE_HELPER(x, y) x##y
+# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
+#endif
+#if !defined(SWIFT_METATYPE)
+# define SWIFT_METATYPE(X) Class
+#endif
+#if !defined(SWIFT_CLASS_PROPERTY)
+# if __has_feature(objc_class_property)
+#  define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
+# else
+#  define SWIFT_CLASS_PROPERTY(...)
+# endif
+#endif
+
+#if __has_attribute(objc_runtime_name)
+# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
+#else
+# define SWIFT_RUNTIME_NAME(X)
+#endif
+#if __has_attribute(swift_name)
+# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
+#else
+# define SWIFT_COMPILE_NAME(X)
+#endif
+#if __has_attribute(objc_method_family)
+# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
+#else
+# define SWIFT_METHOD_FAMILY(X)
+#endif
+#if __has_attribute(noescape)
+# define SWIFT_NOESCAPE __attribute__((noescape))
+#else
+# define SWIFT_NOESCAPE
+#endif
+#if __has_attribute(warn_unused_result)
+# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
+#else
+# define SWIFT_WARN_UNUSED_RESULT
+#endif
+#if __has_attribute(noreturn)
+# define SWIFT_NORETURN __attribute__((noreturn))
+#else
+# define SWIFT_NORETURN
+#endif
+#if !defined(SWIFT_CLASS_EXTRA)
+# define SWIFT_CLASS_EXTRA
+#endif
+#if !defined(SWIFT_PROTOCOL_EXTRA)
+# define SWIFT_PROTOCOL_EXTRA
+#endif
+#if !defined(SWIFT_ENUM_EXTRA)
+# define SWIFT_ENUM_EXTRA
+#endif
+#if !defined(SWIFT_CLASS)
+# if __has_attribute(objc_subclassing_restricted)
+#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
+#  define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
+# else
+#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
+#  define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
+# endif
+#endif
+
+#if !defined(SWIFT_PROTOCOL)
+# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
+# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
+#endif
+
+#if !defined(SWIFT_EXTENSION)
+# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
+#endif
+
+#if !defined(OBJC_DESIGNATED_INITIALIZER)
+# if __has_attribute(objc_designated_initializer)
+#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
+# else
+#  define OBJC_DESIGNATED_INITIALIZER
+# endif
+#endif
+#if !defined(SWIFT_ENUM_ATTR)
+# if defined(__has_attribute) && __has_attribute(enum_extensibility)
+#  define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
+# else
+#  define SWIFT_ENUM_ATTR(_extensibility)
+# endif
+#endif
+#if !defined(SWIFT_ENUM)
+# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
+# if __has_feature(generalized_swift_name)
+#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
+# else
+#  define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
+# endif
+#endif
+#if !defined(SWIFT_UNAVAILABLE)
+# define SWIFT_UNAVAILABLE __attribute__((unavailable))
+#endif
+#if !defined(SWIFT_UNAVAILABLE_MSG)
+# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
+#endif
+#if !defined(SWIFT_AVAILABILITY)
+# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
+#endif
+#if !defined(SWIFT_DEPRECATED)
+# define SWIFT_DEPRECATED __attribute__((deprecated))
+#endif
+#if !defined(SWIFT_DEPRECATED_MSG)
+# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
+#endif
+#if __has_feature(attribute_diagnose_if_objc)
+# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
+#else
+# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
+#endif
+#if __has_feature(modules)
+@import CoreGraphics;
+@import ObjectiveC;
+@import UIKit;
+#endif
+
+#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
+#pragma clang diagnostic ignored "-Wduplicate-method-arg"
+#if __has_warning("-Wpragma-clang-attribute")
+# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
+#endif
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wnullability"
+
+#if __has_attribute(external_source_symbol)
+# pragma push_macro("any")
+# undef any
+# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="MCareFramework",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
+# pragma pop_macro("any")
+#endif
+
+@class NSCoder;
+
+SWIFT_CLASS("_TtC14MCareFramework19MCareCustomAlerview")
+@interface MCareCustomAlerview : UIView
+- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER;
+- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE;
+@end
+
+
+SWIFT_CLASS("_TtC14MCareFramework16MessageProcessor")
+@interface MessageProcessor : NSObject
+- (nonnull instancetype)init SWIFT_UNAVAILABLE;
++ (nonnull instancetype)new SWIFT_DEPRECATED_MSG("-init is unavailable");
+@end
+
+
+
+
+SWIFT_PROTOCOL("_TtP14MCareFramework17mcareHttpDelegate_")
+@protocol mcareHttpDelegate
+- (void)httpResponseWithReqType:(NSString * _Nullable)reqType response:(id _Nullable)response;
+@end
+
+@class NSArray;
+
+SWIFT_PROTOCOL("_TtP14MCareFramework15messageDelegate_")
+@protocol messageDelegate
+@optional
+- (void)sendDeviceTokenWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)showBrowsingUrlWithStrUrl:(NSString * _Nonnull)strUrl;
+- (void)showPopupUrlWithStrUrl:(NSString * _Nonnull)strUrl strMethod:(NSString * _Nullable)strMethod strParameters:(NSString * _Nullable)strParameters;
+- (void)showPopupBrowsingUrlWithStrUrl:(NSString * _Nonnull)strUrl strMethod:(NSString * _Nonnull)strMethod strParameters:(NSString * _Nonnull)strParameters;
+- (void)closePopupWithCallbackFn:(NSString * _Nonnull)callbackFn params:(NSDictionary<NSString *, id> * _Nonnull)params;
+- (void)executeScreenRotateWithOrientation:(NSString * _Nonnull)orientation;
+- (void)showSystemBrowsingWithUrlWithStrUrl:(NSString * _Nonnull)strUrl;
+- (void)showOpenMapWithMapInfoDic:(NSDictionary<NSString *, id> * _Nonnull)mapInfoDic;
+- (void)sendIsInHospitalWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)sendCurrentAreaWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)sendRecentMessageWithCallBackFn:(NSString * _Nonnull)callBackFn pId:(NSString * _Nonnull)pId;
+- (void)addReservationDatetimeWithDateTime:(NSString * _Nonnull)dateTime deptName:(NSString * _Nonnull)deptName doctorName:(NSString * _Nonnull)doctorName hospitalName:(NSString * _Nonnull)hospitalName;
+- (void)addIcalWithTitle:(NSString * _Nonnull)title note:(NSString * _Nonnull)note dtStart:(NSString * _Nonnull)dtStart dtEnd:(NSString * _Nonnull)dtEnd location:(NSString * _Nonnull)location;
+- (void)sendExecuteDBWithCallBackFn:(NSString * _Nonnull)callBackFn actionName:(NSString * _Nonnull)actionName actionValue:(NSDictionary<NSString *, id> * _Nonnull)actionValue;
+- (void)closePopupReturnUrlWithStrUrl:(NSString * _Nonnull)strUrl;
+- (void)sendMCareVersionInfoWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)sendMCareVersionInfo2WithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)sendRecentDomainWithCallBackFn:(NSString * _Nonnull)callBackFn domainName:(NSString * _Nonnull)domainName;
+- (void)managementPaymentWithPaymentType:(NSString * _Nonnull)paymentType actionName:(NSString * _Nonnull)actionName actionValue:(NSDictionary<NSString *, id> * _Nonnull)actionValue;
+- (void)sendRequestPaymentWithCallBackFn:(NSString * _Nonnull)callBackFn paymentType:(NSString * _Nonnull)paymentType actionValue:(NSDictionary<NSString *, id> * _Nonnull)actionValue;
+- (void)requestSpeakOutWithSpeakMessage:(NSString * _Nonnull)speakMessage;
+- (void)exitMcare;
+- (void)textDataShareWithTextData:(NSString * _Nonnull)textData;
+- (void)requestAppCheckWithCallBackFn:(NSString * _Nonnull)callBackFn target:(NSString * _Nonnull)target;
+- (void)requestAppInstallWithTarget:(NSString * _Nonnull)target;
+- (void)sendAppActionWithCallBackFn:(NSString * _Nullable)callBackFn actionName:(NSString * _Nonnull)actionName actionValue:(NSDictionary<NSString *, id> * _Nonnull)actionValue;
+- (void)sendReauthWithCallBackFn:(NSString * _Nonnull)callBackFn target:(NSString * _Nonnull)target externalId:(NSString * _Nonnull)externalId;
+- (void)sendShadowWithCallBackFn:(NSString * _Nonnull)callBackFn target:(NSString * _Nonnull)target externalId:(NSString * _Nonnull)externalId;
+- (void)fidoLoginWithCallBackFn:(NSString * _Nonnull)callBackFn target:(NSString * _Nonnull)target;
+- (void)snsLoginWithCallBackFn:(NSString * _Nonnull)callBackFn snsType:(NSString * _Nonnull)snsType;
+- (void)kakaoSignup;
+- (void)snsLogoutWithCallBackFn:(NSString * _Nonnull)callBackFn snsType:(NSString * _Nonnull)snsType;
+- (void)snsDisconnectWithCallBackFn:(NSString * _Nonnull)callBackFn snsType:(NSString * _Nonnull)snsType;
+- (void)fidoAuthWithCallBackFn:(NSString * _Nonnull)callBackFn target:(NSString * _Nonnull)target externalId:(NSString * _Nonnull)externalId;
+- (void)sendAlarmScheduleWithCallBackFn:(NSString * _Nonnull)callBackFn pId:(NSString * _Nonnull)pId cipherKey:(NSString * _Nonnull)cipherKey;
+- (void)addAlarmScheduleWithCallBackFn:(NSString * _Nonnull)callBackFn startDate:(NSString * _Nonnull)startDate endDate:(NSString * _Nonnull)endDate count:(NSInteger)count actionValues:(NSArray * _Nonnull)actionValues pId:(NSString * _Nonnull)pId cipherKey:(NSString * _Nonnull)cipherKey;
+- (void)invalidFunctionWithFunctionType:(NSString * _Nonnull)functionType callBack:(NSString * _Nullable)callBack;
+- (void)logoutWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)parkingWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)requestOpenAppWithTarget:(NSString * _Nonnull)target callBackArgs:(NSDictionary<NSString *, id> * _Nonnull)callBackArgs;
+- (void)sendInfomationWithInfoDic:(NSDictionary<NSString *, id> * _Nonnull)infoDic;
+- (void)showHtmlPopupWithHtmlString:(NSString * _Nonnull)htmlString;
+- (void)sendWifiStateWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)prescriptionWithInfoDic:(NSDictionary<NSString *, id> * _Nonnull)infoDic;
+- (void)healthScreeningWithInfoDic:(NSDictionary<NSString *, id> * _Nonnull)infoDic;
+- (void)sendBrightnessWithBrightness:(NSString * _Nonnull)brightness restore:(BOOL)restore;
+- (void)openSettingsWithCallBackFn:(NSString * _Nullable)callBackFn;
+- (void)clovaSpeechSynthesisWithText:(NSString * _Nonnull)text speaker:(NSString * _Nonnull)speaker speed:(NSInteger)speed stop:(NSString * _Nonnull)stop;
+- (void)clovaSpeechRecognitionResultWithSuccess:(BOOL)success message:(NSString * _Nonnull)message;
+- (void)showChatbotButtonWithEnable:(BOOL)enable;
+- (void)sendNXNFidoWithCallBackFn:(NSString * _Nonnull)callBackFn target:(NSString * _Nonnull)target type:(NSString * _Nonnull)type fidoId:(NSString * _Nonnull)fidoId;
+- (void)sendAvailableBioTypesWithFidoId:(NSString * _Nonnull)fidoId callBackFn:(NSString * _Nonnull)callBackFn;
+- (void)sendAvailableBioCertWithType:(NSString * _Nonnull)type callBackFn:(NSString * _Nonnull)callBackFn;
+- (void)changeBioTypesWithFidoId:(NSString * _Nonnull)fidoId enable:(NSString * _Nonnull)enable disable:(NSString * _Nonnull)disable callBackFn:(NSString * _Nonnull)callBackFn;
+- (void)sendAuthenticatorsWithFidoId:(NSString * _Nonnull)fidoId callBackFn:(NSString * _Nonnull)callBackFn;
+- (void)checkFidoLoginWithCallBackFn:(NSString * _Nonnull)callBackFn;
+- (void)storeHospitalCdWithHospitalCd:(NSString * _Nonnull)hospitalCd;
+- (void)removeHospitalCd;
+@end
+
+@class NSDictionary;
+
+SWIFT_PROTOCOL("_TtP14MCareFramework15paymentDelegate_")
+@protocol paymentDelegate
+@optional
+- (void)managementPaymentCardWithPaymentType:(NSString * _Nonnull)paymentType actionName:(NSString * _Nonnull)actionName actionValue:(NSDictionary * _Nonnull)actionValue;
+- (void)requestPaymentCertWithCallBackFn:(NSString * _Nonnull)callBackFn paymentType:(NSString * _Nonnull)paymentType actionName:(NSString * _Nonnull)actionName actionValue:(NSDictionary * _Nonnull)actionValue;
+- (void)requestPaymentWithCallBackFn:(NSString * _Nonnull)callBackFn paymentType:(NSString * _Nonnull)paymentType actionValue:(NSDictionary * _Nonnull)actionValue;
+- (void)cancelPaymentWithPaymentType:(NSString * _Nonnull)paymentType actionValue:(NSDictionary * _Nonnull)actionValue;
+- (void)invalidPaymentActionWithPaymentType:(NSString * _Nullable)paymentType callBackFn:(NSString * _Nullable)callBackFn;
+@end
+
+#if __has_attribute(external_source_symbol)
+# pragma clang attribute pop
+#endif
+#pragma clang diagnostic pop

+ 19 - 0
MCareFramework.framework/Headers/MCareFramework.h

@@ -0,0 +1,19 @@
+//
+//  MCareFramework.h
+//  MCareFramework
+//
+//  Created by heesungkim on 2016. 11. 15..
+//  Copyright © 2016년 idatabank. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+//! Project version number for MCareFramework.
+FOUNDATION_EXPORT double MCareFrameworkVersionNumber;
+
+//! Project version string for MCareFramework.
+FOUNDATION_EXPORT const unsigned char MCareFrameworkVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import <MCareFramework/PublicHeader.h>
+
+

二進制
MCareFramework.framework/Info.plist


二進制
MCareFramework.framework/MCareFramework


二進制
MCareFramework.framework/Modules/MCareFramework.swiftmodule/arm.swiftdoc


二進制
MCareFramework.framework/Modules/MCareFramework.swiftmodule/arm.swiftmodule


二進制
MCareFramework.framework/Modules/MCareFramework.swiftmodule/arm64.swiftdoc


二進制
MCareFramework.framework/Modules/MCareFramework.swiftmodule/arm64.swiftmodule


+ 11 - 0
MCareFramework.framework/Modules/module.modulemap

@@ -0,0 +1,11 @@
+framework module MCareFramework {
+  umbrella header "MCareFramework.h"
+
+  export *
+  module * { export * }
+}
+
+module MCareFramework.Swift {
+    header "MCareFramework-Swift.h"
+    requires objc
+}