diff --git a/README.md b/README.md index 7644e03..1198c71 100644 --- a/README.md +++ b/README.md @@ -200,3 +200,79 @@ After this, when user want to open the chat, you can simply ask for the UINaviga ``` Note: Kindly go through the swift's documentation for further APIs and appropriately call corresponding methods. + + +## **Integrate with SwiftUI** + +To use the VerloopSDK in SwiftUI apps, we need to use the UIViewControllerRepresentable to represent an UIKit view controller. Let’s go over all the steps required in doing that. + +### **Setting up the UIKit view controller** + +UIViewControllerRepresentable is a protocol and requires to implement two methods: + +makeUIViewController - create and configure the view controller; +updateUIViewControoler - update the state of the view controller. + +We are going to create and configure the VerloopSDK in the makeUIViewController method. We don’t need to update it, so we can leave the updateUIViewControoler empty. + +### **Coordinator** +Coordinator class that implements the VLEventDelegate protocol. It is a thoughtful approach to how the SwiftUI can communicate with the UIKit delegation pattern idea. + +``` +import SwiftUI +import VerloopSDK + +struct VerifyVerloopRepresentable: UIViewControllerRepresentable { + + func makeUIViewController(context: Context) -> some UIViewController { + var mSDK:VerloopSDK? + + //Initialise the configuration object `VLConfig`. You could pass an identifier to uniquely indentify a user - `userId`. Will be useful to manage logged in user sessions. + var config = VLConfig(clientId: "tarun") + + //config.setRecipeId(recipeId id: String?) + //config.setNotificationToken(notificationToken: string) + //config.setUserName(username name:String) + //config.setUserEmail(userEmail email:String) + //config.setUserPhone(userPhone phone:String) + //config.setUserParam(key:String, value:String) + + verloop = VerloopSDK(config: config) + let chatController = verloop!.getNavController() + return chatController + } + + func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) { } + +} +``` + +``` +let config = VLConfig(clientId: String) + +let config = VLConfig(clientId: String, userId: String?) //clientId is required parameter while userId. +``` +You could otherwise update the userId using the method `setUserId` on an instance of `VLConfig`. + +``` +let config = VLConfig(clientId: String) + +config.setUserId(userId: String) +``` +- Listeners: You could set two listenrs when an end user taps on a button or url in the recipe. +``` +//Button Click Listener + +Example: + +config.setButtonOnClickListener { title, type, payload in + print("button click listenr called") +} + +// URL Click Listener + +config.setUrlClickListener { title, type, payload in + print("button click listenr called") +} + +``` diff --git a/VerifyVerloop/VerifyVerloop.xcodeproj/project.pbxproj b/VerifyVerloop/VerifyVerloop.xcodeproj/project.pbxproj index f3efcf9..efc8749 100644 --- a/VerifyVerloop/VerifyVerloop.xcodeproj/project.pbxproj +++ b/VerifyVerloop/VerifyVerloop.xcodeproj/project.pbxproj @@ -199,7 +199,7 @@ attributes = { BuildIndependentTargetsInParallel = 1; LastSwiftUpdateCheck = 1310; - LastUpgradeCheck = 1540; + LastUpgradeCheck = 1310; TargetAttributes = { 18C7298428166C81006EF202 = { CreatedOnToolsVersion = 13.1; @@ -405,7 +405,6 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -467,7 +466,6 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -492,11 +490,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = VerifyVerloop/VerifyVerloop.entitlements; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 19; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 729M345S3Z; + DEVELOPMENT_TEAM = 5423774D8G; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/VerifyVerloop", @@ -518,8 +514,6 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.tg.SampleVerloopiOSApp; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = WildCard_Profile; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -532,11 +526,9 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = VerifyVerloop/VerifyVerloop.entitlements; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 19; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 729M345S3Z; + DEVELOPMENT_TEAM = 5423774D8G; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/VerifyVerloop", @@ -558,8 +550,6 @@ MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.tg.SampleVerloopiOSApp; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = WildCard_Profile; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/VerifyVerloop/VerifyVerloop.xcodeproj/xcshareddata/xcschemes/VerifyVerloop.xcscheme b/VerifyVerloop/VerifyVerloop.xcodeproj/xcshareddata/xcschemes/VerifyVerloop.xcscheme index 256a624..f7d3eb4 100644 --- a/VerifyVerloop/VerifyVerloop.xcodeproj/xcshareddata/xcschemes/VerifyVerloop.xcscheme +++ b/VerifyVerloop/VerifyVerloop.xcodeproj/xcshareddata/xcschemes/VerifyVerloop.xcscheme @@ -1,6 +1,6 @@ - + + aps-environment + production + diff --git a/VerloopSDK.xcodeproj/project.pbxproj b/VerloopSDK.xcodeproj/project.pbxproj index aa8d0e0..21f60c2 100644 --- a/VerloopSDK.xcodeproj/project.pbxproj +++ b/VerloopSDK.xcodeproj/project.pbxproj @@ -554,8 +554,9 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -569,6 +570,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = io.verloop.VerloopSDK; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; @@ -581,8 +583,9 @@ buildSettings = { CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = ""; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -596,6 +599,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = io.verloop.VerloopSDK; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.pbxproj b/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..3fcf0ee --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.pbxproj @@ -0,0 +1,704 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 56; + objects = { + +/* Begin PBXBuildFile section */ + 509FFC9D2C5B92AD001AF76B /* VerloopSwiftUIExampleApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509FFC9C2C5B92AD001AF76B /* VerloopSwiftUIExampleApp.swift */; }; + 509FFC9F2C5B92AD001AF76B /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509FFC9E2C5B92AD001AF76B /* ContentView.swift */; }; + 509FFCA32C5B92AF001AF76B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 509FFCA22C5B92AF001AF76B /* Assets.xcassets */; }; + 509FFCA72C5B92AF001AF76B /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 509FFCA62C5B92AF001AF76B /* Preview Assets.xcassets */; }; + 509FFCB12C5B92B0001AF76B /* VerloopSwiftUIExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509FFCB02C5B92B0001AF76B /* VerloopSwiftUIExampleTests.swift */; }; + 509FFCBB2C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509FFCBA2C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.swift */; }; + 509FFCBD2C5B92B0001AF76B /* VerloopSwiftUIExampleUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509FFCBC2C5B92B0001AF76B /* VerloopSwiftUIExampleUITestsLaunchTests.swift */; }; + 509FFCCA2C5B9476001AF76B /* VerifyVerloopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509FFCC92C5B9476001AF76B /* VerifyVerloopView.swift */; }; + 509FFCCC2C5B949B001AF76B /* VerifyVerloopRepresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509FFCCB2C5B949B001AF76B /* VerifyVerloopRepresentable.swift */; }; + 509FFCD72C5B9571001AF76B /* VerloopSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 509FFCD32C5B955B001AF76B /* VerloopSDK.framework */; platformFilter = ios; }; + 509FFCD82C5B9571001AF76B /* VerloopSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 509FFCD32C5B955B001AF76B /* VerloopSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 509FFCAD2C5B92B0001AF76B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 509FFC912C5B92AD001AF76B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 509FFC982C5B92AD001AF76B; + remoteInfo = VerloopSwiftUIExample; + }; + 509FFCB72C5B92B0001AF76B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 509FFC912C5B92AD001AF76B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 509FFC982C5B92AD001AF76B; + remoteInfo = VerloopSwiftUIExample; + }; + 509FFCD22C5B955B001AF76B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 509FFCCD2C5B955B001AF76B /* VerloopSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EE300E9B21AA89EF00FDEA21; + remoteInfo = VerloopSDK; + }; + 509FFCD42C5B955B001AF76B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 509FFCCD2C5B955B001AF76B /* VerloopSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 18C7299328166CA1006EF202; + remoteInfo = VerloopSDKTests; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 509FFCD92C5B9571001AF76B /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 509FFCD82C5B9571001AF76B /* VerloopSDK.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 509FFC992C5B92AD001AF76B /* VerloopSwiftUIExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = VerloopSwiftUIExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 509FFC9C2C5B92AD001AF76B /* VerloopSwiftUIExampleApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerloopSwiftUIExampleApp.swift; sourceTree = ""; }; + 509FFC9E2C5B92AD001AF76B /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + 509FFCA22C5B92AF001AF76B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 509FFCA42C5B92AF001AF76B /* VerloopSwiftUIExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = VerloopSwiftUIExample.entitlements; sourceTree = ""; }; + 509FFCA62C5B92AF001AF76B /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + 509FFCAC2C5B92B0001AF76B /* VerloopSwiftUIExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VerloopSwiftUIExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 509FFCB02C5B92B0001AF76B /* VerloopSwiftUIExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerloopSwiftUIExampleTests.swift; sourceTree = ""; }; + 509FFCB62C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = VerloopSwiftUIExampleUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 509FFCBA2C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerloopSwiftUIExampleUITests.swift; sourceTree = ""; }; + 509FFCBC2C5B92B0001AF76B /* VerloopSwiftUIExampleUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerloopSwiftUIExampleUITestsLaunchTests.swift; sourceTree = ""; }; + 509FFCC92C5B9476001AF76B /* VerifyVerloopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerifyVerloopView.swift; sourceTree = ""; }; + 509FFCCB2C5B949B001AF76B /* VerifyVerloopRepresentable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VerifyVerloopRepresentable.swift; sourceTree = ""; }; + 509FFCCD2C5B955B001AF76B /* VerloopSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = VerloopSDK.xcodeproj; path = ../VerloopSDK.xcodeproj; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 509FFC962C5B92AD001AF76B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 509FFCD72C5B9571001AF76B /* VerloopSDK.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 509FFCA92C5B92B0001AF76B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 509FFCB32C5B92B0001AF76B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 509FFC902C5B92AD001AF76B = { + isa = PBXGroup; + children = ( + 509FFCCD2C5B955B001AF76B /* VerloopSDK.xcodeproj */, + 509FFC9B2C5B92AD001AF76B /* VerloopSwiftUIExample */, + 509FFCAF2C5B92B0001AF76B /* VerloopSwiftUIExampleTests */, + 509FFCB92C5B92B0001AF76B /* VerloopSwiftUIExampleUITests */, + 509FFC9A2C5B92AD001AF76B /* Products */, + 509FFCD62C5B9571001AF76B /* Frameworks */, + ); + sourceTree = ""; + }; + 509FFC9A2C5B92AD001AF76B /* Products */ = { + isa = PBXGroup; + children = ( + 509FFC992C5B92AD001AF76B /* VerloopSwiftUIExample.app */, + 509FFCAC2C5B92B0001AF76B /* VerloopSwiftUIExampleTests.xctest */, + 509FFCB62C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 509FFC9B2C5B92AD001AF76B /* VerloopSwiftUIExample */ = { + isa = PBXGroup; + children = ( + 509FFC9C2C5B92AD001AF76B /* VerloopSwiftUIExampleApp.swift */, + 509FFC9E2C5B92AD001AF76B /* ContentView.swift */, + 509FFCC92C5B9476001AF76B /* VerifyVerloopView.swift */, + 509FFCCB2C5B949B001AF76B /* VerifyVerloopRepresentable.swift */, + 509FFCA22C5B92AF001AF76B /* Assets.xcassets */, + 509FFCA42C5B92AF001AF76B /* VerloopSwiftUIExample.entitlements */, + 509FFCA52C5B92AF001AF76B /* Preview Content */, + ); + path = VerloopSwiftUIExample; + sourceTree = ""; + }; + 509FFCA52C5B92AF001AF76B /* Preview Content */ = { + isa = PBXGroup; + children = ( + 509FFCA62C5B92AF001AF76B /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + 509FFCAF2C5B92B0001AF76B /* VerloopSwiftUIExampleTests */ = { + isa = PBXGroup; + children = ( + 509FFCB02C5B92B0001AF76B /* VerloopSwiftUIExampleTests.swift */, + ); + path = VerloopSwiftUIExampleTests; + sourceTree = ""; + }; + 509FFCB92C5B92B0001AF76B /* VerloopSwiftUIExampleUITests */ = { + isa = PBXGroup; + children = ( + 509FFCBA2C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.swift */, + 509FFCBC2C5B92B0001AF76B /* VerloopSwiftUIExampleUITestsLaunchTests.swift */, + ); + path = VerloopSwiftUIExampleUITests; + sourceTree = ""; + }; + 509FFCCE2C5B955B001AF76B /* Products */ = { + isa = PBXGroup; + children = ( + 509FFCD32C5B955B001AF76B /* VerloopSDK.framework */, + 509FFCD52C5B955B001AF76B /* VerloopSDKTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 509FFCD62C5B9571001AF76B /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 509FFC982C5B92AD001AF76B /* VerloopSwiftUIExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 509FFCC02C5B92B0001AF76B /* Build configuration list for PBXNativeTarget "VerloopSwiftUIExample" */; + buildPhases = ( + 509FFC952C5B92AD001AF76B /* Sources */, + 509FFC962C5B92AD001AF76B /* Frameworks */, + 509FFC972C5B92AD001AF76B /* Resources */, + 509FFCD92C5B9571001AF76B /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = VerloopSwiftUIExample; + productName = VerloopSwiftUIExample; + productReference = 509FFC992C5B92AD001AF76B /* VerloopSwiftUIExample.app */; + productType = "com.apple.product-type.application"; + }; + 509FFCAB2C5B92B0001AF76B /* VerloopSwiftUIExampleTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 509FFCC32C5B92B0001AF76B /* Build configuration list for PBXNativeTarget "VerloopSwiftUIExampleTests" */; + buildPhases = ( + 509FFCA82C5B92B0001AF76B /* Sources */, + 509FFCA92C5B92B0001AF76B /* Frameworks */, + 509FFCAA2C5B92B0001AF76B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 509FFCAE2C5B92B0001AF76B /* PBXTargetDependency */, + ); + name = VerloopSwiftUIExampleTests; + productName = VerloopSwiftUIExampleTests; + productReference = 509FFCAC2C5B92B0001AF76B /* VerloopSwiftUIExampleTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 509FFCB52C5B92B0001AF76B /* VerloopSwiftUIExampleUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 509FFCC62C5B92B0001AF76B /* Build configuration list for PBXNativeTarget "VerloopSwiftUIExampleUITests" */; + buildPhases = ( + 509FFCB22C5B92B0001AF76B /* Sources */, + 509FFCB32C5B92B0001AF76B /* Frameworks */, + 509FFCB42C5B92B0001AF76B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 509FFCB82C5B92B0001AF76B /* PBXTargetDependency */, + ); + name = VerloopSwiftUIExampleUITests; + productName = VerloopSwiftUIExampleUITests; + productReference = 509FFCB62C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 509FFC912C5B92AD001AF76B /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1540; + LastUpgradeCheck = 1540; + TargetAttributes = { + 509FFC982C5B92AD001AF76B = { + CreatedOnToolsVersion = 15.4; + }; + 509FFCAB2C5B92B0001AF76B = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 509FFC982C5B92AD001AF76B; + }; + 509FFCB52C5B92B0001AF76B = { + CreatedOnToolsVersion = 15.4; + TestTargetID = 509FFC982C5B92AD001AF76B; + }; + }; + }; + buildConfigurationList = 509FFC942C5B92AD001AF76B /* Build configuration list for PBXProject "VerloopSwiftUIExample" */; + compatibilityVersion = "Xcode 14.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 509FFC902C5B92AD001AF76B; + productRefGroup = 509FFC9A2C5B92AD001AF76B /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 509FFCCE2C5B955B001AF76B /* Products */; + ProjectRef = 509FFCCD2C5B955B001AF76B /* VerloopSDK.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 509FFC982C5B92AD001AF76B /* VerloopSwiftUIExample */, + 509FFCAB2C5B92B0001AF76B /* VerloopSwiftUIExampleTests */, + 509FFCB52C5B92B0001AF76B /* VerloopSwiftUIExampleUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 509FFCD32C5B955B001AF76B /* VerloopSDK.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = VerloopSDK.framework; + remoteRef = 509FFCD22C5B955B001AF76B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 509FFCD52C5B955B001AF76B /* VerloopSDKTests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = VerloopSDKTests.xctest; + remoteRef = 509FFCD42C5B955B001AF76B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 509FFC972C5B92AD001AF76B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 509FFCA72C5B92AF001AF76B /* Preview Assets.xcassets in Resources */, + 509FFCA32C5B92AF001AF76B /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 509FFCAA2C5B92B0001AF76B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 509FFCB42C5B92B0001AF76B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 509FFC952C5B92AD001AF76B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 509FFC9F2C5B92AD001AF76B /* ContentView.swift in Sources */, + 509FFCCA2C5B9476001AF76B /* VerifyVerloopView.swift in Sources */, + 509FFC9D2C5B92AD001AF76B /* VerloopSwiftUIExampleApp.swift in Sources */, + 509FFCCC2C5B949B001AF76B /* VerifyVerloopRepresentable.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 509FFCA82C5B92B0001AF76B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 509FFCB12C5B92B0001AF76B /* VerloopSwiftUIExampleTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 509FFCB22C5B92B0001AF76B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 509FFCBB2C5B92B0001AF76B /* VerloopSwiftUIExampleUITests.swift in Sources */, + 509FFCBD2C5B92B0001AF76B /* VerloopSwiftUIExampleUITestsLaunchTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 509FFCAE2C5B92B0001AF76B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 509FFC982C5B92AD001AF76B /* VerloopSwiftUIExample */; + targetProxy = 509FFCAD2C5B92B0001AF76B /* PBXContainerItemProxy */; + }; + 509FFCB82C5B92B0001AF76B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 509FFC982C5B92AD001AF76B /* VerloopSwiftUIExample */; + targetProxy = 509FFCB72C5B92B0001AF76B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 509FFCBE2C5B92B0001AF76B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 509FFCBF2C5B92B0001AF76B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SWIFT_COMPILATION_MODE = wholemodule; + }; + name = Release; + }; + 509FFCC12C5B92B0001AF76B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = VerloopSwiftUIExample/VerloopSwiftUIExample.entitlements; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"VerloopSwiftUIExample/Preview Content\""; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 729M345S3Z; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 14.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.VerloopSwiftUIExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = WildCard_Profile; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 509FFCC22C5B92B0001AF76B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = VerloopSwiftUIExample/VerloopSwiftUIExample.entitlements; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"VerloopSwiftUIExample/Preview Content\""; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 729M345S3Z; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphoneos*]" = YES; + "INFOPLIST_KEY_UILaunchScreen_Generation[sdk=iphonesimulator*]" = YES; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphoneos*]" = UIStatusBarStyleDefault; + "INFOPLIST_KEY_UIStatusBarStyle[sdk=iphonesimulator*]" = UIStatusBarStyleDefault; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks"; + "LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 14.0; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.VerloopSwiftUIExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = WildCard_Profile; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 509FFCC42C5B92B0001AF76B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MACOSX_DEPLOYMENT_TARGET = 14.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.VerloopSwiftUIExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VerloopSwiftUIExample.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/VerloopSwiftUIExample"; + }; + name = Debug; + }; + 509FFCC52C5B92B0001AF76B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MACOSX_DEPLOYMENT_TARGET = 14.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.VerloopSwiftUIExampleTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/VerloopSwiftUIExample.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/VerloopSwiftUIExample"; + }; + name = Release; + }; + 509FFCC72C5B92B0001AF76B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MACOSX_DEPLOYMENT_TARGET = 14.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.VerloopSwiftUIExampleUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = VerloopSwiftUIExample; + }; + name = Debug; + }; + 509FFCC82C5B92B0001AF76B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.5; + MACOSX_DEPLOYMENT_TARGET = 14.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.VerloopSwiftUIExampleUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = VerloopSwiftUIExample; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 509FFC942C5B92AD001AF76B /* Build configuration list for PBXProject "VerloopSwiftUIExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 509FFCBE2C5B92B0001AF76B /* Debug */, + 509FFCBF2C5B92B0001AF76B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 509FFCC02C5B92B0001AF76B /* Build configuration list for PBXNativeTarget "VerloopSwiftUIExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 509FFCC12C5B92B0001AF76B /* Debug */, + 509FFCC22C5B92B0001AF76B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 509FFCC32C5B92B0001AF76B /* Build configuration list for PBXNativeTarget "VerloopSwiftUIExampleTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 509FFCC42C5B92B0001AF76B /* Debug */, + 509FFCC52C5B92B0001AF76B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 509FFCC62C5B92B0001AF76B /* Build configuration list for PBXNativeTarget "VerloopSwiftUIExampleUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 509FFCC72C5B92B0001AF76B /* Debug */, + 509FFCC82C5B92B0001AF76B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 509FFC912C5B92AD001AF76B /* Project object */; +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/AccentColor.colorset/Contents.json b/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/AppIcon.appiconset/Contents.json b/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..532cd72 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,63 @@ +{ + "images" : [ + { + "idiom" : "universal", + "platform" : "ios", + "size" : "1024x1024" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "16x16" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "32x32" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "128x128" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "256x256" + }, + { + "idiom" : "mac", + "scale" : "1x", + "size" : "512x512" + }, + { + "idiom" : "mac", + "scale" : "2x", + "size" : "512x512" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/Contents.json b/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/ContentView.swift b/VerloopSwiftUIExample/VerloopSwiftUIExample/ContentView.swift new file mode 100644 index 0000000..a8f6a35 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/ContentView.swift @@ -0,0 +1,28 @@ +// +// ContentView.swift +// VerloopSwiftUIExample +// +// Created by Pankaj Patel on 01/08/24. +// + +// +// ContentView.swift +// VerifyVerloopSwiftUI +// +// Created by Pankaj Patel on 28/06/24. +// + +import SwiftUI +import SwiftData + +struct ContentView: View { + var body: some View { + VerifyVerloopView() + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/Preview Content/Preview Assets.xcassets/Contents.json b/VerloopSwiftUIExample/VerloopSwiftUIExample/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/VerifyVerloopRepresentable.swift b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerifyVerloopRepresentable.swift new file mode 100644 index 0000000..e24ede3 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerifyVerloopRepresentable.swift @@ -0,0 +1,39 @@ +// +// VerifyVerloopRepresentable.swift +// VerloopSwiftUIExample +// +// Created by Pankaj Patel on 01/08/24. +// + + +import SwiftUI +import VerloopSDK + +struct VerifyVerloopRepresentable: UIViewControllerRepresentable { + + func makeUIViewController(context: Context) -> some UIViewController { + var verloop:VerloopSDK? + var config = VLConfig(clientId: "reactnative") + //config.setRecipeId(recipeId id: String?) + //config.setNotificationToken(notificationToken: string) + //config.setUserName(username name:String) + //config.setUserEmail(userEmail email:String) + //config.setUserPhone(userPhone phone:String) + //config.setUserParam(key:String, value:String) + config.setButtonOnClickListener { title, type, payload in + print("button click listenr called") + } + + config.setUrlRedirectionFlag(canRedirect: false) + + config.setUrlClickListener { url in + print("URL click listener called") + } + + verloop = VerloopSDK(config: config) + let chatController = verloop!.getNavController() + return chatController + } + + func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) { } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/VerifyVerloopView.swift b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerifyVerloopView.swift new file mode 100644 index 0000000..962bdcf --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerifyVerloopView.swift @@ -0,0 +1,27 @@ +// +// VerifyVerloopView.swift +// VerloopSwiftUIExample +// +// Created by Pankaj Patel on 01/08/24. +// + + +import SwiftUI +struct VerifyVerloopView: View { + @State private var isLinkActive = false + var body: some View { + NavigationView { + VStack(alignment: .leading) { + Button(action: { + self.isLinkActive = true + }) { + Text("Launch Verloop") + } + } + .navigationBarTitle(Text("Verify Verloop")) + .fullScreenCover(isPresented: $isLinkActive){ + VerifyVerloopRepresentable() + } + } + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/VerloopSwiftUIExample.entitlements b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerloopSwiftUIExample.entitlements new file mode 100644 index 0000000..f2ef3ae --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerloopSwiftUIExample.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.files.user-selected.read-only + + + diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExample/VerloopSwiftUIExampleApp.swift b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerloopSwiftUIExampleApp.swift new file mode 100644 index 0000000..3f5bc29 --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExample/VerloopSwiftUIExampleApp.swift @@ -0,0 +1,18 @@ +// +// VerloopSwiftUIExampleApp.swift +// VerloopSwiftUIExample +// +// Created by Pankaj Patel on 01/08/24. +// + +import SwiftUI +import SwiftData + +@main +struct VerloopSwiftUIExampleApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExampleTests/VerloopSwiftUIExampleTests.swift b/VerloopSwiftUIExample/VerloopSwiftUIExampleTests/VerloopSwiftUIExampleTests.swift new file mode 100644 index 0000000..9a31c9d --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExampleTests/VerloopSwiftUIExampleTests.swift @@ -0,0 +1,35 @@ +// +// VerloopSwiftUIExampleTests.swift +// VerloopSwiftUIExampleTests +// +// Created by Pankaj Patel on 01/08/24. +// + +import XCTest + +final class VerloopSwiftUIExampleTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + // Any test you write for XCTest can be annotated as throws and async. + // Mark your test throws to produce an unexpected failure when your test encounters an uncaught error. + // Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExampleUITests/VerloopSwiftUIExampleUITests.swift b/VerloopSwiftUIExample/VerloopSwiftUIExampleUITests/VerloopSwiftUIExampleUITests.swift new file mode 100644 index 0000000..674c4cf --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExampleUITests/VerloopSwiftUIExampleUITests.swift @@ -0,0 +1,41 @@ +// +// VerloopSwiftUIExampleUITests.swift +// VerloopSwiftUIExampleUITests +// +// Created by Pankaj Patel on 01/08/24. +// + +import XCTest + +final class VerloopSwiftUIExampleUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/VerloopSwiftUIExample/VerloopSwiftUIExampleUITests/VerloopSwiftUIExampleUITestsLaunchTests.swift b/VerloopSwiftUIExample/VerloopSwiftUIExampleUITests/VerloopSwiftUIExampleUITestsLaunchTests.swift new file mode 100644 index 0000000..9e7d39d --- /dev/null +++ b/VerloopSwiftUIExample/VerloopSwiftUIExampleUITests/VerloopSwiftUIExampleUITestsLaunchTests.swift @@ -0,0 +1,32 @@ +// +// VerloopSwiftUIExampleUITestsLaunchTests.swift +// VerloopSwiftUIExampleUITests +// +// Created by Pankaj Patel on 01/08/24. +// + +import XCTest + +final class VerloopSwiftUIExampleUITestsLaunchTests: XCTestCase { + + override class var runsForEachTargetApplicationUIConfiguration: Bool { + true + } + + override func setUpWithError() throws { + continueAfterFailure = false + } + + func testLaunch() throws { + let app = XCUIApplication() + app.launch() + + // Insert steps here to perform after app launch but before taking a screenshot, + // such as logging into a test account or navigating somewhere in the app + + let attachment = XCTAttachment(screenshot: app.screenshot()) + attachment.name = "Launch Screen" + attachment.lifetime = .keepAlways + add(attachment) + } +}