diff --git a/.gitignore b/.gitignore
index 6c5ecff0..26d64551 100644
--- a/.gitignore
+++ b/.gitignore
@@ -153,7 +153,7 @@ playground.xcworkspace
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
-# Pods/
+Pods/
#
# Add this line if you want to avoid checking in source code from the Xcode workspace
# *.xcworkspace
@@ -192,4 +192,4 @@ iOSInjectionProject/
# Plugin ignore
# ==========
plugin/node_modules
-plugin/dist
\ No newline at end of file
+plugin/dist
diff --git a/ios/IonicPortals.xcworkspace/contents.xcworkspacedata b/ios/IonicPortals.xcworkspace/contents.xcworkspacedata
index d9e18947..e2d01ceb 100644
--- a/ios/IonicPortals.xcworkspace/contents.xcworkspacedata
+++ b/ios/IonicPortals.xcworkspace/contents.xcworkspacedata
@@ -7,4 +7,7 @@
+
+
diff --git a/ios/IonicPortals/IonicPortals.podspec b/ios/IonicPortals/IonicPortals.podspec
new file mode 100644
index 00000000..98fc6f03
--- /dev/null
+++ b/ios/IonicPortals/IonicPortals.podspec
@@ -0,0 +1,14 @@
+require 'json'
+
+Pod::Spec.new do |s|
+ s.name = 'IonicPortals'
+ s.version = '0.0.1'
+ s.summary = 'Portals Description'
+ s.license = 'Portals License'
+ s.homepage = 'https://ionic.io/portals'
+ s.author = 'Ionic'
+ s.source_files = 'IonicPortals/**/*.{swift,h,m,c,cc,mm,cpp}'
+ s.ios.deployment_target = '12.0'
+ s.dependency 'Portals'
+ s.swift_version = '5.1'
+end
diff --git a/ios/IonicPortals/IonicPortals.xcodeproj/project.pbxproj b/ios/IonicPortals/IonicPortals.xcodeproj/project.pbxproj
index 4c30827b..eebe94a7 100644
--- a/ios/IonicPortals/IonicPortals.xcodeproj/project.pbxproj
+++ b/ios/IonicPortals/IonicPortals.xcodeproj/project.pbxproj
@@ -7,6 +7,9 @@
objects = {
/* Begin PBXBuildFile section */
+ 3845A534A28C7E3728A0A58A /* Pods_IonicPortals.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E44A8EABC3166358F2924543 /* Pods_IonicPortals.framework */; };
+ E90B7D4C26A9C4F40067D73E /* PortalBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90B7D4B26A9C4F40067D73E /* PortalBuilder.swift */; };
+ E90B7D5026A9CB880067D73E /* PortalManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90B7D4F26A9CB880067D73E /* PortalManager.swift */; };
E985F88A269E2D260031F820 /* IonicPortals.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E985F880269E2D260031F820 /* IonicPortals.framework */; };
E985F88F269E2D260031F820 /* IonicPortalsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E985F88E269E2D260031F820 /* IonicPortalsTests.swift */; };
E985F891269E2D260031F820 /* IonicPortals.h in Headers */ = {isa = PBXBuildFile; fileRef = E985F883269E2D260031F820 /* IonicPortals.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -24,6 +27,11 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 2514A9D89B5C400A41EF8FEB /* Pods-IonicPortals.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IonicPortals.release.xcconfig"; path = "Target Support Files/Pods-IonicPortals/Pods-IonicPortals.release.xcconfig"; sourceTree = ""; };
+ 2C8BCCA3D236847121E67C22 /* Pods-IonicPortals.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-IonicPortals.debug.xcconfig"; path = "Target Support Files/Pods-IonicPortals/Pods-IonicPortals.debug.xcconfig"; sourceTree = ""; };
+ E44A8EABC3166358F2924543 /* Pods_IonicPortals.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_IonicPortals.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ E90B7D4B26A9C4F40067D73E /* PortalBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = PortalBuilder.swift; path = IonicPortals/PortalBuilder.swift; sourceTree = ""; };
+ E90B7D4F26A9CB880067D73E /* PortalManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PortalManager.swift; path = IonicPortals/PortalManager.swift; sourceTree = ""; };
E985F880269E2D260031F820 /* IonicPortals.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IonicPortals.framework; sourceTree = BUILT_PRODUCTS_DIR; };
E985F883269E2D260031F820 /* IonicPortals.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IonicPortals.h; sourceTree = ""; };
E985F884269E2D260031F820 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -38,6 +46,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ 3845A534A28C7E3728A0A58A /* Pods_IonicPortals.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -52,13 +61,35 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 1F249143665D3AA4301AD1DE /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ E44A8EABC3166358F2924543 /* Pods_IonicPortals.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+ 9D0BB0A71D75531B34F29BDB /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 2C8BCCA3D236847121E67C22 /* Pods-IonicPortals.debug.xcconfig */,
+ 2514A9D89B5C400A41EF8FEB /* Pods-IonicPortals.release.xcconfig */,
+ );
+ name = Pods;
+ path = ../Pods;
+ sourceTree = "";
+ };
E985F876269E2D260031F820 = {
isa = PBXGroup;
children = (
+ E90B7D4F26A9CB880067D73E /* PortalManager.swift */,
+ E90B7D4B26A9C4F40067D73E /* PortalBuilder.swift */,
E985F89E269E2D830031F820 /* Portal.swift */,
E985F882269E2D260031F820 /* IonicPortals */,
E985F88D269E2D260031F820 /* IonicPortalsTests */,
E985F881269E2D260031F820 /* Products */,
+ 9D0BB0A71D75531B34F29BDB /* Pods */,
+ 1F249143665D3AA4301AD1DE /* Frameworks */,
);
sourceTree = "";
};
@@ -107,6 +138,7 @@
isa = PBXNativeTarget;
buildConfigurationList = E985F894269E2D260031F820 /* Build configuration list for PBXNativeTarget "IonicPortals" */;
buildPhases = (
+ 6F34B2740496582483E29D5A /* [CP] Check Pods Manifest.lock */,
E985F87B269E2D260031F820 /* Headers */,
E985F87C269E2D260031F820 /* Sources */,
E985F87D269E2D260031F820 /* Frameworks */,
@@ -193,11 +225,38 @@
};
/* End PBXResourcesBuildPhase section */
+/* Begin PBXShellScriptBuildPhase section */
+ 6F34B2740496582483E29D5A /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-IonicPortals-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
/* Begin PBXSourcesBuildPhase section */
E985F87C269E2D260031F820 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ E90B7D4C26A9C4F40067D73E /* PortalBuilder.swift in Sources */,
+ E90B7D5026A9CB880067D73E /* PortalManager.swift in Sources */,
E985F89F269E2D830031F820 /* Portal.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -345,6 +404,7 @@
};
E985F895269E2D260031F820 /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 2C8BCCA3D236847121E67C22 /* Pods-IonicPortals.debug.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
@@ -372,6 +432,7 @@
};
E985F896269E2D260031F820 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 2514A9D89B5C400A41EF8FEB /* Pods-IonicPortals.release.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
diff --git a/ios/IonicPortals/IonicPortals/Portal.swift b/ios/IonicPortals/IonicPortals/Portal.swift
index 1dd756bf..74387607 100644
--- a/ios/IonicPortals/IonicPortals/Portal.swift
+++ b/ios/IonicPortals/IonicPortals/Portal.swift
@@ -6,13 +6,26 @@
//
import Foundation
+import Capacitor
public class Portal {
- public init() {
+
+ // MARK: - Instance Properties
+ public let name: String;
+ public var plugins: [CAPPlugin] = []
+ public var initialContext: Any?
+ public var startDir: String?
+
+ public init(_ name: String) {
print("Constructor")
+ self.name = name
}
public func HelloWorld() {
print("Hello World")
}
+
+ public func addPlugins(_ plugins: [CAPPlugin]) {
+ self.plugins = plugins
+ }
}
diff --git a/ios/IonicPortals/IonicPortals/PortalBuilder.swift b/ios/IonicPortals/IonicPortals/PortalBuilder.swift
new file mode 100644
index 00000000..13eae297
--- /dev/null
+++ b/ios/IonicPortals/IonicPortals/PortalBuilder.swift
@@ -0,0 +1,63 @@
+//
+// PortalManager.swift
+// IonicPortals
+//
+// Created by Thomas Vidas on 7/22/21.
+//
+
+import Foundation
+import Capacitor
+
+typealias OnPortalBuilderComplete = (_ portal : Portal) -> Void
+
+class PortalBuilder {
+
+ // MARK: - Static Properties
+
+ // MARK: - Instance Properties
+ private let name: String
+ private let onBuilderComplete: OnPortalBuilderComplete
+
+ private var startDir: String?
+ private var initialContext: Any?
+
+ // Initialization
+ public init(_ name: String, _ onComplete: @escaping OnPortalBuilderComplete) {
+ self.name = name
+ self.onBuilderComplete = onComplete
+ }
+
+ /**
+ * Sets the starting directory entry point for the web app if you have multiple web apps to choose from
+ * - Parameter startDir: The relative file path of the folder that contains your web app
+ * - Returns: self
+ */
+ public func setStartDir(startDir: String) -> PortalBuilder {
+ self.startDir = startDir
+ return self
+ }
+
+
+ /**
+ * Sets an initial context for the web application to pass the web application an initial state
+ * - Parameter initialContext: An object that can be serialized into JSON
+ * - Returns: self
+ */
+ public func setInitialContext(initialContext: Any) -> PortalBuilder {
+ self.initialContext = initialContext
+ return self
+ }
+
+ /**
+ * Sets an initial context for the web application to pass the web application an initial state
+ * - Parameter initialContext: An object that can be serialized into JSON
+ * - Returns: A newly created portal
+ */
+ public func create() -> Portal {
+ let portal = Portal(self.name)
+ portal.startDir = self.startDir ?? portal.name
+ portal.initialContext = self.initialContext
+ self.onBuilderComplete(portal)
+ return portal
+ }
+}
diff --git a/ios/IonicPortals/IonicPortals/PortalManager.swift b/ios/IonicPortals/IonicPortals/PortalManager.swift
new file mode 100644
index 00000000..29ad2011
--- /dev/null
+++ b/ios/IonicPortals/IonicPortals/PortalManager.swift
@@ -0,0 +1,68 @@
+//
+// PortalManager.swift
+// IonicPortals
+//
+// Created by Thomas Vidas on 7/22/21.
+//
+
+import Foundation
+
+enum PortalError: Error {
+ case notFound(String)
+ case alreadyExists(String)
+}
+
+class PortalManager {
+
+ // MARK: - Static Properties
+
+ static let shared = PortalManager()
+
+ // MARK: - Instance Properties
+
+ private var portals = Dictionary()
+
+ // Initialization
+
+ private init() {}
+
+ /**
+ * Returns the number of `Portal` objects in the `PortalManager`.
+ * - returns: The count of `Portal` objects.
+ */
+ public func count() -> Int {
+ return portals.count
+ }
+
+ /**
+ * Adds a `Portal` object given the `name` of the portal.
+ * - Parameter portal: The `Portal` to add to the manager.
+ */
+ public func addPortal(_ portal: Portal) -> Void {
+ portals[portal.name] = portal
+ }
+
+ /**
+ * Returns a `Portal` object given the name of the portal
+ * - Parameter name: The Portal name
+ * - throws: `PortalError.notFound` if the `Portal` does not exist
+ * - returns: The existing `Portal` class with name `name`.
+ */
+ public func getPortal(_ name: String) throws -> Portal {
+ guard let output = portals[name] else {
+ throw PortalError.notFound("Portal with portalId \(name) not found in PortalManager")
+ }
+ return output
+ }
+
+ /**
+ * A helper method to build `Portal` classes and add them to the manager. Classes built with newPortal are added to the `PortalManager` automatically.
+ * - Parameter name: The `Portal` name
+ * - returns: A `PortalBuilder` object that has a fluent API to construct a `Portal`.
+ */
+ public func newPortal(_ name: String) -> PortalBuilder {
+ return PortalBuilder(name, { (portal) in
+ PortalManager.shared.addPortal(portal)
+ })
+ }
+}
diff --git a/ios/Podfile b/ios/Podfile
new file mode 100644
index 00000000..e3733cb2
--- /dev/null
+++ b/ios/Podfile
@@ -0,0 +1,27 @@
+source 'https://github.com/native-portal/podspecs.git'
+
+platform :ios, '12.0'
+workspace 'IonicPortals'
+
+def testapp_pods
+ # none
+end
+
+def capacitor_pods
+ # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
+ use_frameworks!
+ podspec :path => './IonicPortals/IonicPortals.podspec'
+ pod 'Portals'
+ pod 'CapacitorCordova'
+end
+
+target 'IonicPortals' do
+ project './IonicPortals/IonicPortals.xcodeproj'
+ capacitor_pods
+end
+
+target 'PortalsTestApp (iOS)' do
+ project './PortalsTestApp/PortalsTestApp.xcodeproj'
+ capacitor_pods
+ testapp_pods
+end
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 00000000..9c7f468e
--- /dev/null
+++ b/ios/Podfile.lock
@@ -0,0 +1,21 @@
+PODS:
+ - CapacitorCordova (3.0.1)
+ - Portals (3.0.1):
+ - CapacitorCordova (= 3.0.1)
+
+DEPENDENCIES:
+ - CapacitorCordova
+ - Portals
+
+SPEC REPOS:
+ https://github.com/native-portal/podspecs.git:
+ - CapacitorCordova
+ - Portals
+
+SPEC CHECKSUMS:
+ CapacitorCordova: 19b9a7bfa2e24a18281258c269390a7b38cb2eaf
+ Portals: 30c3554216671a1e092c24f0215045b1426185d4
+
+PODFILE CHECKSUM: a2102afa5b92a3d22f1e7af35386d31e5c3c334e
+
+COCOAPODS: 1.10.0
diff --git a/ios/PortalsTestApp/PortalsTestApp.xcodeproj/project.pbxproj b/ios/PortalsTestApp/PortalsTestApp.xcodeproj/project.pbxproj
index 0902eaa2..88286b69 100644
--- a/ios/PortalsTestApp/PortalsTestApp.xcodeproj/project.pbxproj
+++ b/ios/PortalsTestApp/PortalsTestApp.xcodeproj/project.pbxproj
@@ -7,6 +7,7 @@
objects = {
/* Begin PBXBuildFile section */
+ BC5925F02FA8099E098526D4 /* Pods_PortalsTestApp__iOS_.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB808F557ADC62A7FAD03BE3 /* Pods_PortalsTestApp__iOS_.framework */; };
E985F816269E259D0031F820 /* PortalsTestAppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = E985F803269E259C0031F820 /* PortalsTestAppApp.swift */; };
E985F817269E259D0031F820 /* PortalsTestAppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = E985F803269E259C0031F820 /* PortalsTestAppApp.swift */; };
E985F818269E259D0031F820 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E985F804269E259C0031F820 /* ContentView.swift */; };
@@ -32,6 +33,9 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 09680184EB42C0DC6C11256E /* Pods-PortalsTestApp (iOS).debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PortalsTestApp (iOS).debug.xcconfig"; path = "Target Support Files/Pods-PortalsTestApp (iOS)/Pods-PortalsTestApp (iOS).debug.xcconfig"; sourceTree = ""; };
+ 0E99D95CF46AC2C97E26C361 /* Pods-PortalsTestApp (iOS).release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PortalsTestApp (iOS).release.xcconfig"; path = "Target Support Files/Pods-PortalsTestApp (iOS)/Pods-PortalsTestApp (iOS).release.xcconfig"; sourceTree = ""; };
+ DB808F557ADC62A7FAD03BE3 /* Pods_PortalsTestApp__iOS_.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PortalsTestApp__iOS_.framework; sourceTree = BUILT_PRODUCTS_DIR; };
E985F803269E259C0031F820 /* PortalsTestAppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortalsTestAppApp.swift; sourceTree = ""; };
E985F804269E259C0031F820 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; };
E985F805269E259D0031F820 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
@@ -49,6 +53,7 @@
buildActionMask = 2147483647;
files = (
E985F89B269E2D550031F820 /* IonicPortals.framework in Frameworks */,
+ BC5925F02FA8099E098526D4 /* Pods_PortalsTestApp__iOS_.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -62,6 +67,16 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 7CC64A1A195DD76703AF9D8C /* Pods */ = {
+ isa = PBXGroup;
+ children = (
+ 09680184EB42C0DC6C11256E /* Pods-PortalsTestApp (iOS).debug.xcconfig */,
+ 0E99D95CF46AC2C97E26C361 /* Pods-PortalsTestApp (iOS).release.xcconfig */,
+ );
+ name = Pods;
+ path = ../Pods;
+ sourceTree = "";
+ };
E985F7FD269E259C0031F820 = {
isa = PBXGroup;
children = (
@@ -70,6 +85,7 @@
E985F813269E259D0031F820 /* macOS */,
E985F80B269E259D0031F820 /* Products */,
E985F824269E25E60031F820 /* Frameworks */,
+ 7CC64A1A195DD76703AF9D8C /* Pods */,
);
sourceTree = "";
};
@@ -113,6 +129,7 @@
isa = PBXGroup;
children = (
E985F89A269E2D550031F820 /* IonicPortals.framework */,
+ DB808F557ADC62A7FAD03BE3 /* Pods_PortalsTestApp__iOS_.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -124,18 +141,18 @@
isa = PBXNativeTarget;
buildConfigurationList = E985F81E269E259D0031F820 /* Build configuration list for PBXNativeTarget "PortalsTestApp (iOS)" */;
buildPhases = (
+ 9F3B401080EA2DF2EEB9F9B2 /* [CP] Check Pods Manifest.lock */,
E985F807269E259D0031F820 /* Frameworks */,
E985F89D269E2D550031F820 /* Embed Frameworks */,
E985F806269E259D0031F820 /* Sources */,
E985F808269E259D0031F820 /* Resources */,
+ 91CD9E7CAA49D4EA8A6DAF79 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "PortalsTestApp (iOS)";
- packageProductDependencies = (
- );
productName = "PortalsTestApp (iOS)";
productReference = E985F80A269E259D0031F820 /* PortalsTestApp.app */;
productType = "com.apple.product-type.application";
@@ -212,6 +229,48 @@
};
/* End PBXResourcesBuildPhase section */
+/* Begin PBXShellScriptBuildPhase section */
+ 91CD9E7CAA49D4EA8A6DAF79 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-PortalsTestApp (iOS)/Pods-PortalsTestApp (iOS)-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-PortalsTestApp (iOS)/Pods-PortalsTestApp (iOS)-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PortalsTestApp (iOS)/Pods-PortalsTestApp (iOS)-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 9F3B401080EA2DF2EEB9F9B2 /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-PortalsTestApp (iOS)-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+/* End PBXShellScriptBuildPhase section */
+
/* Begin PBXSourcesBuildPhase section */
E985F806269E259D0031F820 /* Sources */ = {
isa = PBXSourcesBuildPhase;
@@ -347,6 +406,7 @@
};
E985F81F269E259D0031F820 /* Debug */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 09680184EB42C0DC6C11256E /* Pods-PortalsTestApp (iOS).debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
@@ -369,6 +429,7 @@
};
E985F820269E259D0031F820 /* Release */ = {
isa = XCBuildConfiguration;
+ baseConfigurationReference = 0E99D95CF46AC2C97E26C361 /* Pods-PortalsTestApp (iOS).release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
diff --git a/ios/PortalsTestApp/Shared/PortalsTestAppApp.swift b/ios/PortalsTestApp/Shared/PortalsTestAppApp.swift
index 1c6b57ba..76ec8b3e 100644
--- a/ios/PortalsTestApp/Shared/PortalsTestAppApp.swift
+++ b/ios/PortalsTestApp/Shared/PortalsTestAppApp.swift
@@ -11,7 +11,7 @@ import IonicPortals
@main
struct PortalsTestAppApp: App {
init() {
- let p = Portal();
+ let p = Portal("Hello");
p.HelloWorld();
}