9
0

[MWI-2350] Integration Demo für ProductCatalog erstellen

This commit is contained in:
fpavkovic 2024-03-27 15:53:11 +01:00
parent f7ba6aa346
commit eb74eb79e9
24 changed files with 1757 additions and 1 deletions

0
.gitignore vendored Normal file → Executable file
View File

0
LICENSE.txt Normal file → Executable file
View File

View File

@ -0,0 +1,754 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 55;
objects = {
/* Begin PBXBuildFile section */
4C40CAAA291A6DE700D76323 /* EWebIdEnv.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C40CAA9291A6DE700D76323 /* EWebIdEnv.swift */; };
4C40CABB291A717000D76323 /* CustomizedPluginTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C40CABA291A717000D76323 /* CustomizedPluginTheme.swift */; };
4C40CABD291A718D00D76323 /* LICENSE.txt in Resources */ = {isa = PBXBuildFile; fileRef = 4C40CABC291A718D00D76323 /* LICENSE.txt */; };
4C4DEF962BB56D5F00F28680 /* WebIdMetaPlugin in Frameworks */ = {isa = PBXBuildFile; productRef = 4C4DEF952BB56D5F00F28680 /* WebIdMetaPlugin */; };
4C4DEF982BB56D5F00F28680 /* WebIdPayOnServerProductPlugin in Frameworks */ = {isa = PBXBuildFile; productRef = 4C4DEF972BB56D5F00F28680 /* WebIdPayOnServerProductPlugin */; };
4C4DEF9A2BB56D5F00F28680 /* WebIdEIdOnServerProductPlugin in Frameworks */ = {isa = PBXBuildFile; productRef = 4C4DEF992BB56D5F00F28680 /* WebIdEIdOnServerProductPlugin */; };
4C4DEF9C2BB56D5F00F28680 /* WebIdAutoIdentOnServerProductPlugin in Frameworks */ = {isa = PBXBuildFile; productRef = 4C4DEF9B2BB56D5F00F28680 /* WebIdAutoIdentOnServerProductPlugin */; };
4C62C1D42BB577CD0070AA6F /* WebIdVideoIdentProductPlugin in Frameworks */ = {isa = PBXBuildFile; productRef = 4C62C1D32BB577CD0070AA6F /* WebIdVideoIdentProductPlugin */; };
4C63AACE288193F10046A02E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C63AACD288193F10046A02E /* AppDelegate.swift */; };
4C63AAD0288193F10046A02E /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C63AACF288193F10046A02E /* SceneDelegate.swift */; };
4C63AAD2288193F10046A02E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C63AAD1288193F10046A02E /* ViewController.swift */; };
4C63AAD5288193F10046A02E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4C63AAD3288193F10046A02E /* Main.storyboard */; };
4C63AAD7288193F40046A02E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4C63AAD6288193F40046A02E /* Assets.xcassets */; };
4C63AADA288193F40046A02E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4C63AAD8288193F40046A02E /* LaunchScreen.storyboard */; };
4C63AAE5288193F40046A02E /* MetaPluginDemoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C63AAE4288193F40046A02E /* MetaPluginDemoTests.swift */; };
4C63AAEF288193F40046A02E /* MetaPluginDemoUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C63AAEE288193F40046A02E /* MetaPluginDemoUITests.swift */; };
4C63AAF1288193F40046A02E /* MetaPluginDemoUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C63AAF0288193F40046A02E /* MetaPluginDemoUITestsLaunchTests.swift */; };
4C63AB012881991C0046A02E /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C63AB002881991C0046A02E /* Credentials.swift */; };
4CB10A1B2B860F1400624BC6 /* webid-gateway.de_2024.11.02.cer in Resources */ = {isa = PBXBuildFile; fileRef = 4CB10A172B860F1400624BC6 /* webid-gateway.de_2024.11.02.cer */; };
4CB10A1C2B860F1400624BC6 /* test.webid-solutions.de_2024.02.27.cer in Resources */ = {isa = PBXBuildFile; fileRef = 4CB10A182B860F1400624BC6 /* test.webid-solutions.de_2024.02.27.cer */; };
4CB10A1D2B860F1400624BC6 /* test.webid-solutions.de_2025.02.22.cer in Resources */ = {isa = PBXBuildFile; fileRef = 4CB10A192B860F1400624BC6 /* test.webid-solutions.de_2025.02.22.cer */; };
4CB10A1E2B860F1400624BC6 /* webid-gateway.de_2023.12.01.cer in Resources */ = {isa = PBXBuildFile; fileRef = 4CB10A1A2B860F1400624BC6 /* webid-gateway.de_2023.12.01.cer */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
4C63AAE1288193F40046A02E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 4C63AAC2288193F10046A02E /* Project object */;
proxyType = 1;
remoteGlobalIDString = 4C63AAC9288193F10046A02E;
remoteInfo = MetaPluginDemo;
};
4C63AAEB288193F40046A02E /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 4C63AAC2288193F10046A02E /* Project object */;
proxyType = 1;
remoteGlobalIDString = 4C63AAC9288193F10046A02E;
remoteInfo = MetaPluginDemo;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
4C21466928B3C40300D9BC87 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = "<group>"; };
4C40CAA9291A6DE700D76323 /* EWebIdEnv.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EWebIdEnv.swift; sourceTree = "<group>"; };
4C40CABA291A717000D76323 /* CustomizedPluginTheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomizedPluginTheme.swift; sourceTree = "<group>"; };
4C40CABC291A718D00D76323 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE.txt; sourceTree = "<group>"; };
4C5972D92888113400912838 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
4C63AACA288193F10046A02E /* MetaPluginDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MetaPluginDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
4C63AACD288193F10046A02E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
4C63AACF288193F10046A02E /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
4C63AAD1288193F10046A02E /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
4C63AAD4288193F10046A02E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
4C63AAD6288193F40046A02E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
4C63AAD9288193F40046A02E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
4C63AADB288193F40046A02E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
4C63AAE0288193F40046A02E /* MetaPluginDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MetaPluginDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4C63AAE4288193F40046A02E /* MetaPluginDemoTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaPluginDemoTests.swift; sourceTree = "<group>"; };
4C63AAEA288193F40046A02E /* MetaPluginDemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MetaPluginDemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
4C63AAEE288193F40046A02E /* MetaPluginDemoUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaPluginDemoUITests.swift; sourceTree = "<group>"; };
4C63AAF0288193F40046A02E /* MetaPluginDemoUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MetaPluginDemoUITestsLaunchTests.swift; sourceTree = "<group>"; };
4C63AB002881991C0046A02E /* Credentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Credentials.swift; sourceTree = "<group>"; };
4CB10A172B860F1400624BC6 /* webid-gateway.de_2024.11.02.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = "webid-gateway.de_2024.11.02.cer"; sourceTree = "<group>"; };
4CB10A182B860F1400624BC6 /* test.webid-solutions.de_2024.02.27.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test.webid-solutions.de_2024.02.27.cer"; sourceTree = "<group>"; };
4CB10A192B860F1400624BC6 /* test.webid-solutions.de_2025.02.22.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test.webid-solutions.de_2025.02.22.cer"; sourceTree = "<group>"; };
4CB10A1A2B860F1400624BC6 /* webid-gateway.de_2023.12.01.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = "webid-gateway.de_2023.12.01.cer"; sourceTree = "<group>"; };
C8B6F1CC2BB460890023D2BF /* init.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = init.sh; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
4C63AAC7288193F10046A02E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
4C4DEF982BB56D5F00F28680 /* WebIdPayOnServerProductPlugin in Frameworks */,
4C4DEF9A2BB56D5F00F28680 /* WebIdEIdOnServerProductPlugin in Frameworks */,
4C4DEF962BB56D5F00F28680 /* WebIdMetaPlugin in Frameworks */,
4C4DEF9C2BB56D5F00F28680 /* WebIdAutoIdentOnServerProductPlugin in Frameworks */,
4C62C1D42BB577CD0070AA6F /* WebIdVideoIdentProductPlugin in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4C63AADD288193F40046A02E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
4C63AAE7288193F40046A02E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
4C40CAB5291A6EA000D76323 /* Certificates */ = {
isa = PBXGroup;
children = (
4CB10A182B860F1400624BC6 /* test.webid-solutions.de_2024.02.27.cer */,
4CB10A192B860F1400624BC6 /* test.webid-solutions.de_2025.02.22.cer */,
4CB10A1A2B860F1400624BC6 /* webid-gateway.de_2023.12.01.cer */,
4CB10A172B860F1400624BC6 /* webid-gateway.de_2024.11.02.cer */,
);
path = Certificates;
sourceTree = "<group>";
};
4C4DEF942BB56D5F00F28680 /* Frameworks */ = {
isa = PBXGroup;
children = (
);
name = Frameworks;
sourceTree = "<group>";
};
4C63AAC1288193F10046A02E = {
isa = PBXGroup;
children = (
C8B6F1CC2BB460890023D2BF /* init.sh */,
4C40CABC291A718D00D76323 /* LICENSE.txt */,
4C21466928B3C40300D9BC87 /* .gitignore */,
4C5972D92888113400912838 /* README.md */,
4C63AACC288193F10046A02E /* MetaPluginDemo */,
4C63AAE3288193F40046A02E /* MetaPluginDemoTests */,
4C63AAED288193F40046A02E /* MetaPluginDemoUITests */,
4C63AACB288193F10046A02E /* Products */,
4C4DEF942BB56D5F00F28680 /* Frameworks */,
);
sourceTree = "<group>";
};
4C63AACB288193F10046A02E /* Products */ = {
isa = PBXGroup;
children = (
4C63AACA288193F10046A02E /* MetaPluginDemo.app */,
4C63AAE0288193F40046A02E /* MetaPluginDemoTests.xctest */,
4C63AAEA288193F40046A02E /* MetaPluginDemoUITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
4C63AACC288193F10046A02E /* MetaPluginDemo */ = {
isa = PBXGroup;
children = (
4C40CAB5291A6EA000D76323 /* Certificates */,
4C63AACD288193F10046A02E /* AppDelegate.swift */,
4C63AACF288193F10046A02E /* SceneDelegate.swift */,
4C63AAD1288193F10046A02E /* ViewController.swift */,
4C63AAD3288193F10046A02E /* Main.storyboard */,
4C63AAD6288193F40046A02E /* Assets.xcassets */,
4C63AAD8288193F40046A02E /* LaunchScreen.storyboard */,
4C63AADB288193F40046A02E /* Info.plist */,
4C63AB002881991C0046A02E /* Credentials.swift */,
4C40CAA9291A6DE700D76323 /* EWebIdEnv.swift */,
4C40CABA291A717000D76323 /* CustomizedPluginTheme.swift */,
);
path = MetaPluginDemo;
sourceTree = "<group>";
};
4C63AAE3288193F40046A02E /* MetaPluginDemoTests */ = {
isa = PBXGroup;
children = (
4C63AAE4288193F40046A02E /* MetaPluginDemoTests.swift */,
);
path = MetaPluginDemoTests;
sourceTree = "<group>";
};
4C63AAED288193F40046A02E /* MetaPluginDemoUITests */ = {
isa = PBXGroup;
children = (
4C63AAEE288193F40046A02E /* MetaPluginDemoUITests.swift */,
4C63AAF0288193F40046A02E /* MetaPluginDemoUITestsLaunchTests.swift */,
);
path = MetaPluginDemoUITests;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
4C63AAC9288193F10046A02E /* MetaPluginDemo */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4C63AAF4288193F40046A02E /* Build configuration list for PBXNativeTarget "MetaPluginDemo" */;
buildPhases = (
4C63AAC6288193F10046A02E /* Sources */,
4C63AAC7288193F10046A02E /* Frameworks */,
4C63AAC8288193F10046A02E /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = MetaPluginDemo;
packageProductDependencies = (
4C4DEF952BB56D5F00F28680 /* WebIdMetaPlugin */,
4C4DEF972BB56D5F00F28680 /* WebIdPayOnServerProductPlugin */,
4C4DEF992BB56D5F00F28680 /* WebIdEIdOnServerProductPlugin */,
4C4DEF9B2BB56D5F00F28680 /* WebIdAutoIdentOnServerProductPlugin */,
4C62C1D32BB577CD0070AA6F /* WebIdVideoIdentProductPlugin */,
);
productName = MetaPluginDemo;
productReference = 4C63AACA288193F10046A02E /* MetaPluginDemo.app */;
productType = "com.apple.product-type.application";
};
4C63AADF288193F40046A02E /* MetaPluginDemoTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4C63AAF7288193F40046A02E /* Build configuration list for PBXNativeTarget "MetaPluginDemoTests" */;
buildPhases = (
4C63AADC288193F40046A02E /* Sources */,
4C63AADD288193F40046A02E /* Frameworks */,
4C63AADE288193F40046A02E /* Resources */,
);
buildRules = (
);
dependencies = (
4C63AAE2288193F40046A02E /* PBXTargetDependency */,
);
name = MetaPluginDemoTests;
productName = MetaPluginDemoTests;
productReference = 4C63AAE0288193F40046A02E /* MetaPluginDemoTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
4C63AAE9288193F40046A02E /* MetaPluginDemoUITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 4C63AAFA288193F40046A02E /* Build configuration list for PBXNativeTarget "MetaPluginDemoUITests" */;
buildPhases = (
4C63AAE6288193F40046A02E /* Sources */,
4C63AAE7288193F40046A02E /* Frameworks */,
4C63AAE8288193F40046A02E /* Resources */,
);
buildRules = (
);
dependencies = (
4C63AAEC288193F40046A02E /* PBXTargetDependency */,
);
name = MetaPluginDemoUITests;
productName = MetaPluginDemoUITests;
productReference = 4C63AAEA288193F40046A02E /* MetaPluginDemoUITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
4C63AAC2288193F10046A02E /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1340;
LastUpgradeCheck = 1340;
TargetAttributes = {
4C63AAC9288193F10046A02E = {
CreatedOnToolsVersion = 13.4.1;
};
4C63AADF288193F40046A02E = {
CreatedOnToolsVersion = 13.4.1;
TestTargetID = 4C63AAC9288193F10046A02E;
};
4C63AAE9288193F40046A02E = {
CreatedOnToolsVersion = 13.4.1;
TestTargetID = 4C63AAC9288193F10046A02E;
};
};
};
buildConfigurationList = 4C63AAC5288193F10046A02E /* Build configuration list for PBXProject "MetaPluginDemo" */;
compatibilityVersion = "Xcode 13.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 4C63AAC1288193F10046A02E;
packageReferences = (
C8B6F1CD2BB467E50023D2BF /* XCRemoteSwiftPackageReference "webid-meta-plugin-spm" */,
C8B6F1CE2BB468100023D2BF /* XCRemoteSwiftPackageReference "webid-pay-on-server-product-plugin-spm" */,
C8B6F1CF2BB4682D0023D2BF /* XCRemoteSwiftPackageReference "webid-eid-on-server-product-plugin-spm" */,
C8B6F1D02BB468600023D2BF /* XCRemoteSwiftPackageReference "webid-auto-ident-on-server-product-plugin-spm" */,
4C62C1D22BB577B70070AA6F /* XCRemoteSwiftPackageReference "webid-video-ident-product-plugin-spm" */,
);
productRefGroup = 4C63AACB288193F10046A02E /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
4C63AAC9288193F10046A02E /* MetaPluginDemo */,
4C63AADF288193F40046A02E /* MetaPluginDemoTests */,
4C63AAE9288193F40046A02E /* MetaPluginDemoUITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
4C63AAC8288193F10046A02E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4CB10A1B2B860F1400624BC6 /* webid-gateway.de_2024.11.02.cer in Resources */,
4CB10A1D2B860F1400624BC6 /* test.webid-solutions.de_2025.02.22.cer in Resources */,
4C40CABD291A718D00D76323 /* LICENSE.txt in Resources */,
4C63AADA288193F40046A02E /* LaunchScreen.storyboard in Resources */,
4CB10A1C2B860F1400624BC6 /* test.webid-solutions.de_2024.02.27.cer in Resources */,
4C63AAD7288193F40046A02E /* Assets.xcassets in Resources */,
4CB10A1E2B860F1400624BC6 /* webid-gateway.de_2023.12.01.cer in Resources */,
4C63AAD5288193F10046A02E /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4C63AADE288193F40046A02E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
4C63AAE8288193F40046A02E /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
4C63AAC6288193F10046A02E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4C63AAD2288193F10046A02E /* ViewController.swift in Sources */,
4C63AACE288193F10046A02E /* AppDelegate.swift in Sources */,
4C63AB012881991C0046A02E /* Credentials.swift in Sources */,
4C63AAD0288193F10046A02E /* SceneDelegate.swift in Sources */,
4C40CAAA291A6DE700D76323 /* EWebIdEnv.swift in Sources */,
4C40CABB291A717000D76323 /* CustomizedPluginTheme.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4C63AADC288193F40046A02E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4C63AAE5288193F40046A02E /* MetaPluginDemoTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
4C63AAE6288193F40046A02E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4C63AAEF288193F40046A02E /* MetaPluginDemoUITests.swift in Sources */,
4C63AAF1288193F40046A02E /* MetaPluginDemoUITestsLaunchTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
4C63AAE2288193F40046A02E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 4C63AAC9288193F10046A02E /* MetaPluginDemo */;
targetProxy = 4C63AAE1288193F40046A02E /* PBXContainerItemProxy */;
};
4C63AAEC288193F40046A02E /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 4C63AAC9288193F10046A02E /* MetaPluginDemo */;
targetProxy = 4C63AAEB288193F40046A02E /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
4C63AAD3288193F10046A02E /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
4C63AAD4288193F10046A02E /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
4C63AAD8288193F40046A02E /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
4C63AAD9288193F40046A02E /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
4C63AAF2288193F40046A02E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
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;
GCC_C_LANGUAGE_STANDARD = gnu11;
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;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
4C63AAF3288193F40046A02E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
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;
GCC_C_LANGUAGE_STANDARD = gnu11;
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;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
4C63AAF5288193F40046A02E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 86HTHE89B5;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = MetaPluginDemo/Info.plist;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.2;
PRODUCT_BUNDLE_IDENTIFIER = de.webidsolutions.MetaPluginDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
4C63AAF6288193F40046A02E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 86HTHE89B5;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = MetaPluginDemo/Info.plist;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.2;
PRODUCT_BUNDLE_IDENTIFIER = de.webidsolutions.MetaPluginDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
4C63AAF8288193F40046A02E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 86HTHE89B5;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = de.webidsolutions.MetaPluginDemoTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MetaPluginDemo.app/MetaPluginDemo";
};
name = Debug;
};
4C63AAF9288193F40046A02E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 86HTHE89B5;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = de.webidsolutions.MetaPluginDemoTests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MetaPluginDemo.app/MetaPluginDemo";
};
name = Release;
};
4C63AAFB288193F40046A02E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 86HTHE89B5;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = de.webidsolutions.MetaPluginDemoUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = MetaPluginDemo;
};
name = Debug;
};
4C63AAFC288193F40046A02E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 86HTHE89B5;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = de.webidsolutions.MetaPluginDemoUITests;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = MetaPluginDemo;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
4C63AAC5288193F10046A02E /* Build configuration list for PBXProject "MetaPluginDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4C63AAF2288193F40046A02E /* Debug */,
4C63AAF3288193F40046A02E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4C63AAF4288193F40046A02E /* Build configuration list for PBXNativeTarget "MetaPluginDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4C63AAF5288193F40046A02E /* Debug */,
4C63AAF6288193F40046A02E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4C63AAF7288193F40046A02E /* Build configuration list for PBXNativeTarget "MetaPluginDemoTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4C63AAF8288193F40046A02E /* Debug */,
4C63AAF9288193F40046A02E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
4C63AAFA288193F40046A02E /* Build configuration list for PBXNativeTarget "MetaPluginDemoUITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
4C63AAFB288193F40046A02E /* Debug */,
4C63AAFC288193F40046A02E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
4C62C1D22BB577B70070AA6F /* XCRemoteSwiftPackageReference "webid-video-ident-product-plugin-spm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://api.webid-solutions.de/releases/ios/spm/SwiftPackages/webid-video-ident-product-plugin-spm";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 12.0.2;
};
};
C8B6F1CD2BB467E50023D2BF /* XCRemoteSwiftPackageReference "webid-meta-plugin-spm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://api.webid-solutions.de/releases/ios/spm/SwiftPackages/webid-meta-plugin-spm.git";
requirement = {
kind = upToNextMinorVersion;
minimumVersion = 12.0.2;
};
};
C8B6F1CE2BB468100023D2BF /* XCRemoteSwiftPackageReference "webid-pay-on-server-product-plugin-spm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://api.webid-solutions.de/releases/ios/spm/SwiftPackages/webid-pay-on-server-product-plugin-spm.git";
requirement = {
kind = upToNextMinorVersion;
minimumVersion = 12.0.2;
};
};
C8B6F1CF2BB4682D0023D2BF /* XCRemoteSwiftPackageReference "webid-eid-on-server-product-plugin-spm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://api.webid-solutions.de/releases/ios/spm/SwiftPackages/webid-eid-on-server-product-plugin-spm.git";
requirement = {
kind = upToNextMinorVersion;
minimumVersion = 12.0.2;
};
};
C8B6F1D02BB468600023D2BF /* XCRemoteSwiftPackageReference "webid-auto-ident-on-server-product-plugin-spm" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://api.webid-solutions.de/releases/ios/spm/SwiftPackages/webid-auto-ident-on-server-product-plugin-spm.git";
requirement = {
kind = upToNextMinorVersion;
minimumVersion = 12.0.2;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
4C4DEF952BB56D5F00F28680 /* WebIdMetaPlugin */ = {
isa = XCSwiftPackageProductDependency;
package = C8B6F1CD2BB467E50023D2BF /* XCRemoteSwiftPackageReference "webid-meta-plugin-spm" */;
productName = WebIdMetaPlugin;
};
4C4DEF972BB56D5F00F28680 /* WebIdPayOnServerProductPlugin */ = {
isa = XCSwiftPackageProductDependency;
package = C8B6F1CE2BB468100023D2BF /* XCRemoteSwiftPackageReference "webid-pay-on-server-product-plugin-spm" */;
productName = WebIdPayOnServerProductPlugin;
};
4C4DEF992BB56D5F00F28680 /* WebIdEIdOnServerProductPlugin */ = {
isa = XCSwiftPackageProductDependency;
package = C8B6F1CF2BB4682D0023D2BF /* XCRemoteSwiftPackageReference "webid-eid-on-server-product-plugin-spm" */;
productName = WebIdEIdOnServerProductPlugin;
};
4C4DEF9B2BB56D5F00F28680 /* WebIdAutoIdentOnServerProductPlugin */ = {
isa = XCSwiftPackageProductDependency;
package = C8B6F1D02BB468600023D2BF /* XCRemoteSwiftPackageReference "webid-auto-ident-on-server-product-plugin-spm" */;
productName = WebIdAutoIdentOnServerProductPlugin;
};
4C62C1D32BB577CD0070AA6F /* WebIdVideoIdentProductPlugin */ = {
isa = XCSwiftPackageProductDependency;
package = 4C62C1D22BB577B70070AA6F /* XCRemoteSwiftPackageReference "webid-video-ident-product-plugin-spm" */;
productName = WebIdVideoIdentProductPlugin;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 4C63AAC2288193F10046A02E /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?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>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,31 @@
/*
* Created by WebID Solutions GmbH | www.webid-solutions.de.
* See the file "LICENSE" for the full license governing this code.
*/
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
// MARK: UISceneSession Lifecycle
@available(iOS 13.0, *)
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
// Called when a new scene session is being created.
// Use this method to select a configuration to create the new scene with.
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
@available(iOS 13.0, *)
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
// Called when the user discards a scene session.
// If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
// Use this method to release any resources that were specific to the discarded scenes, as they will not return.
}
}

View File

@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,98 @@
{
"images" : [
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="WebId MetaPlugin Demo" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1lF-ra-Rin">
<rect key="frame" x="96" y="443.5" width="222" height="23"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="19"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="1lF-ra-Rin" firstAttribute="centerY" secondItem="6Tk-OE-BBY" secondAttribute="centerY" id="BMa-Up-uQn"/>
<constraint firstItem="1lF-ra-Rin" firstAttribute="centerX" secondItem="6Tk-OE-BBY" secondAttribute="centerX" id="GCv-PP-ElC"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@ -0,0 +1,279 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="32700.99.1234" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22684"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="MetaPluginDemo" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MetaPlugin Demo" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3il-Vf-Phi">
<rect key="frame" x="16" y="64" width="382" height="29"/>
<fontDescription key="fontDescription" type="system" pointSize="24"/>
<color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PUe-T3-52Q">
<rect key="frame" x="16" y="786" width="382" height="60"/>
<color key="backgroundColor" red="0.018132103609999999" green="0.69416606430000005" blue="0.98419028519999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="height" constant="60" id="TnD-dk-CPm"/>
</constraints>
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<state key="normal" title="Button"/>
<buttonConfiguration key="configuration" style="plain" title="Start Plugin"/>
<connections>
<action selector="touchStartButton:" destination="BYZ-38-t0r" eventType="touchUpInside" id="doh-h2-vQO"/>
</connections>
</button>
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Pcb-oa-bZp">
<rect key="frame" x="16" y="109" width="382" height="661"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="dfm-OY-YAc">
<rect key="frame" x="0.0" y="0.0" width="382" height="677.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Choose Mode:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f2n-za-HjY">
<rect key="frame" x="0.0" y="0.0" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<pickerView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ubY-TI-odM" userLabel="mode_picker">
<rect key="frame" x="0.0" y="20.5" width="382" height="216"/>
</pickerView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Choose Plugins to add:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hsv-Sx-aLI">
<rect key="frame" x="0.0" y="236.5" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rQ9-1q-btO" userLabel="checkbox_1" customClass="Checkbox" customModule="WebIdUiKitComponents">
<rect key="frame" x="0.0" y="257" width="382" height="50"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="Y6l-mg-qC3"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="checkmarkColor">
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="uncheckedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="fontSize">
<real key="value" value="15"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="topMargin">
<real key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="dimension">
<real key="value" value="20"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="fontColor">
<color key="value" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="boolean" keyPath="solidWhenChecked" value="YES"/>
<userDefinedRuntimeAttribute type="color" keyPath="checkedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="borderStyle" value="square"/>
<userDefinedRuntimeAttribute type="string" keyPath="markStyle" value="check"/>
<userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
<real key="value" value="2"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="translationToken" value="message3StartCall"/>
<userDefinedRuntimeAttribute type="boolean" keyPath="localizable" value="YES"/>
</userDefinedRuntimeAttributes>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tiV-0b-ogq" userLabel="checkbox_2" customClass="Checkbox" customModule="WebIdUiKitComponents">
<rect key="frame" x="0.0" y="307" width="382" height="50"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="yax-7R-Zk2"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="checkmarkColor">
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="uncheckedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="fontSize">
<real key="value" value="15"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="topMargin">
<real key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="dimension">
<real key="value" value="20"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="fontColor">
<color key="value" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="boolean" keyPath="solidWhenChecked" value="YES"/>
<userDefinedRuntimeAttribute type="color" keyPath="checkedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="borderStyle" value="square"/>
<userDefinedRuntimeAttribute type="string" keyPath="markStyle" value="check"/>
<userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
<real key="value" value="2"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="translationToken" value="message3StartCall"/>
<userDefinedRuntimeAttribute type="boolean" keyPath="localizable" value="YES"/>
</userDefinedRuntimeAttributes>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aG4-6k-d29" userLabel="checkbox_3" customClass="Checkbox" customModule="WebIdUiKitComponents">
<rect key="frame" x="0.0" y="357" width="382" height="50"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="ppJ-3g-urO"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="checkmarkColor">
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="uncheckedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="fontSize">
<real key="value" value="15"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="topMargin">
<real key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="dimension">
<real key="value" value="20"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="fontColor">
<color key="value" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="boolean" keyPath="solidWhenChecked" value="YES"/>
<userDefinedRuntimeAttribute type="color" keyPath="checkedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="borderStyle" value="square"/>
<userDefinedRuntimeAttribute type="string" keyPath="markStyle" value="check"/>
<userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
<real key="value" value="2"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="translationToken" value="message3StartCall"/>
<userDefinedRuntimeAttribute type="boolean" keyPath="localizable" value="YES"/>
</userDefinedRuntimeAttributes>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8UN-U2-rDK" userLabel="checkbox_4" customClass="Checkbox" customModule="WebIdUiKitComponents">
<rect key="frame" x="0.0" y="407" width="382" height="50"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="tdo-nd-wwz"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="checkmarkColor">
<color key="value" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="uncheckedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="fontSize">
<real key="value" value="15"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="topMargin">
<real key="value" value="8"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="dimension">
<real key="value" value="20"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="color" keyPath="fontColor">
<color key="value" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="boolean" keyPath="solidWhenChecked" value="YES"/>
<userDefinedRuntimeAttribute type="color" keyPath="checkedColor">
<color key="value" red="0.019607843140000001" green="0.69411764710000001" blue="0.98431372549999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="borderStyle" value="square"/>
<userDefinedRuntimeAttribute type="string" keyPath="markStyle" value="check"/>
<userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
<real key="value" value="2"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="string" keyPath="translationToken" value="message3StartCall"/>
<userDefinedRuntimeAttribute type="boolean" keyPath="localizable" value="YES"/>
</userDefinedRuntimeAttributes>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Log:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="P2H-Xn-XDe">
<rect key="frame" x="0.0" y="457" width="382" height="20.5"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" text="Nothing yet..." textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="ueI-Uz-yHO">
<rect key="frame" x="0.0" y="477.5" width="382" height="200"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="200" id="BHp-W7-FN7"/>
</constraints>
<color key="textColor" systemColor="labelColor"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
</textView>
</subviews>
</stackView>
</subviews>
<constraints>
<constraint firstItem="dfm-OY-YAc" firstAttribute="width" secondItem="tl5-Yp-sEz" secondAttribute="width" id="CrA-S5-Efb"/>
<constraint firstItem="dfm-OY-YAc" firstAttribute="bottom" secondItem="jIK-eR-MKG" secondAttribute="bottom" id="Iqm-n6-kmg"/>
<constraint firstItem="dfm-OY-YAc" firstAttribute="trailing" secondItem="jIK-eR-MKG" secondAttribute="trailing" id="Vk6-AM-PSz"/>
<constraint firstItem="jIK-eR-MKG" firstAttribute="top" secondItem="dfm-OY-YAc" secondAttribute="top" id="Xio-SO-nnZ"/>
<constraint firstItem="dfm-OY-YAc" firstAttribute="leading" secondItem="jIK-eR-MKG" secondAttribute="leading" id="ik4-zo-U6M"/>
</constraints>
<viewLayoutGuide key="contentLayoutGuide" id="jIK-eR-MKG"/>
<viewLayoutGuide key="frameLayoutGuide" id="tl5-Yp-sEz"/>
</scrollView>
</subviews>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="Pcb-oa-bZp" secondAttribute="trailing" constant="16" id="17d-QF-569"/>
<constraint firstItem="PUe-T3-52Q" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="16" id="5zr-tX-XQG"/>
<constraint firstItem="Pcb-oa-bZp" firstAttribute="top" secondItem="3il-Vf-Phi" secondAttribute="bottom" constant="16" id="DfH-6W-4kw"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="bottom" secondItem="PUe-T3-52Q" secondAttribute="bottom" constant="16" id="KzE-Px-2cE"/>
<constraint firstItem="PUe-T3-52Q" firstAttribute="top" secondItem="Pcb-oa-bZp" secondAttribute="bottom" constant="16" id="V20-b0-Zul"/>
<constraint firstItem="3il-Vf-Phi" firstAttribute="top" secondItem="6Tk-OE-BBY" secondAttribute="top" constant="16" id="Z5T-Dv-qis"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="PUe-T3-52Q" secondAttribute="trailing" constant="16" id="cVV-q7-eME"/>
<constraint firstItem="6Tk-OE-BBY" firstAttribute="trailing" secondItem="3il-Vf-Phi" secondAttribute="trailing" constant="16" id="k5d-tr-sRS"/>
<constraint firstItem="3il-Vf-Phi" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="16" id="tm0-mp-2KI"/>
<constraint firstItem="Pcb-oa-bZp" firstAttribute="leading" secondItem="6Tk-OE-BBY" secondAttribute="leading" constant="16" id="zur-Rf-Rjm"/>
</constraints>
</view>
<connections>
<outlet property="cbAutoIdOnServer" destination="rQ9-1q-btO" id="nVq-kA-3kB"/>
<outlet property="cbEIdOnServer" destination="8UN-U2-rDK" id="Fwz-68-UOq"/>
<outlet property="cbPayOnServer" destination="tiV-0b-ogq" id="PwY-lC-bGV"/>
<outlet property="cbVideoId" destination="aG4-6k-d29" id="9fw-bW-SWt"/>
<outlet property="log" destination="ueI-Uz-yHO" id="qPq-xt-YgB"/>
<outlet property="modePicker" destination="ubY-TI-odM" id="2oU-VA-BxB"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="132" y="110"/>
</scene>
</scenes>
<resources>
<systemColor name="labelColor">
<color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,26 @@
/*
* Created by WebID Solutions GmbH | www.webid-solutions.de.
* See the file "LICENSE" for the full license governing this code.
*/
import WebIdUiKitComponents
/**
* A collection of themes for customizing the product-plugin appearance.
*/
class CustomizedPluginTheme {
/**
* Creates a ``WebidAppTheme`` to use in light mode or, if older than iOS 13.0, standard mode.
*/
internal static func getLightVersion() -> WebidAppTheme {
WebidAppTheme()
}
/**
* Creates a ``WebidAppTheme`` to use in dark mode.
*/
internal static func getDarkVersion() -> WebidAppTheme {
WebidAppTheme()
}
}

64
MetaPluginDemo/EWebIdEnv.swift Executable file
View File

@ -0,0 +1,64 @@
//
// Created by WebID Solutions GmbH | www.webid-solutions.de.
// See the file "LICENSE" for the full license governing this code.
//
import Foundation
class EWebIDEnv {
struct WebIDEnv: Equatable {
let uri: URLComponents
let username: String
let apiKey: String
let name: String
let pinningCerts: [SecCertificate]
static func == (lhs: WebIDEnv, rhs: WebIDEnv) -> Bool {
return (lhs.uri == rhs.uri && lhs.name == rhs.name)
}
static func != (lhs: WebIDEnv, rhs: WebIDEnv) -> Bool {
return (!(lhs == rhs))
}
}
// one environment (here PRODUCTION) has to have an actionIdPrefix= nil, all other environments != nil
static let TEST = WebIDEnv(
uri: URLComponents(string: "https://test.webid-solutions.de")!,
username: Credentials.demoUsernameTest,
apiKey: Credentials.demoApiKeyTest,
name: "Test",
pinningCerts: EWebIDEnv.getPinningCerts(certResourceNames: [
"test.webid-solutions.de_2025.02.22",
"test.webid-solutions.de_2024.02.27"
])
)
static let PRODUCTION = WebIDEnv(
uri: URLComponents(string: "https://webid-gateway.de")!,
username: Credentials.demoUsernameProduction,
apiKey: Credentials.demoApiKeyProduction,
name: "",
pinningCerts: EWebIDEnv.getPinningCerts(certResourceNames: [
"webid-gateway.de_2024.11.02",
"webid-gateway.de_2023.12.01"
])
)
static func getPinningCerts(certResourceNames: [String]) -> [SecCertificate] {
var certificates: [SecCertificate] = []
for certResourceName in certResourceNames {
let url = Bundle.main.url(
forResource: certResourceName,
withExtension: "cer"
)!
let localCertificate = try! Data(contentsOf: url) as CFData
if let certificate = SecCertificateCreateWithData(
nil,
localCertificate
) {
certificates.append(certificate)
}
}
return certificates
}
}

29
MetaPluginDemo/Info.plist Executable file
View File

@ -0,0 +1,29 @@
<?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>
<key>NSMicrophoneUsageDescription</key>
<string>This app needs access to your microphone to perform a video identification</string>
<key>NSCameraUsageDescription</key>
<string>This app needs access to your camera to perform a video identification</string>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,55 @@
/*
* Created by WebID Solutions GmbH | www.webid-solutions.de.
* See the file "LICENSE" for the full license governing this code.
*/
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
@available(iOS 13.0, *)
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let _ = (scene as? UIWindowScene) else { return }
}
@available(iOS 13.0, *)
func sceneDidDisconnect(_ scene: UIScene) {
// Called as the scene is being released by the system.
// This occurs shortly after the scene enters the background, or when its session is discarded.
// Release any resources associated with this scene that can be re-created the next time the scene connects.
// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
}
@available(iOS 13.0, *)
func sceneDidBecomeActive(_ scene: UIScene) {
// Called when the scene has moved from an inactive state to an active state.
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
}
@available(iOS 13.0, *)
func sceneWillResignActive(_ scene: UIScene) {
// Called when the scene will move from an active state to an inactive state.
// This may occur due to temporary interruptions (ex. an incoming phone call).
}
@available(iOS 13.0, *)
func sceneWillEnterForeground(_ scene: UIScene) {
// Called as the scene transitions from the background to the foreground.
// Use this method to undo the changes made on entering the background.
}
@available(iOS 13.0, *)
func sceneDidEnterBackground(_ scene: UIScene) {
// Called as the scene transitions from the foreground to the background.
// Use this method to save data, release shared resources, and store enough scene-specific state information
// to restore the scene back to its current state.
}
}

View File

@ -0,0 +1,251 @@
/*
* Created by WebID Solutions GmbH | www.webid-solutions.de.
* See the file "LICENSE" for the full license governing this code.
*/
import UIKit
import WebIdIosSdk
import WebIdPluginCore
import WebIdMetaPlugin
import WebIdUiKitComponents
import WebIdVideoIdentProductPlugin
import WebIdPayOnServerProductPlugin
import WebIdEIdOnServerProductPlugin
import WebIdAutoIdentOnServerProductPlugin
/// Demo App which starts the ``VideoIdentProductPlugin`` and handles its result
class ViewController:
UIViewController,
UIPickerViewDataSource,
UIPickerViewDelegate,
IProductPluginWebidDelegate {
var metaPluginExecutionMode: EMetaPluginMode = .live
@IBOutlet weak var modePicker: UIPickerView!
@IBOutlet weak var cbAutoIdOnServer: Checkbox!
@IBOutlet weak var cbPayOnServer: Checkbox!
@IBOutlet weak var cbVideoId: Checkbox!
@IBOutlet weak var cbEIdOnServer: Checkbox!
@IBOutlet weak var log: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
modePicker.delegate = self
modePicker.dataSource = self
cbAutoIdOnServer.textView.textColor = .black
cbPayOnServer.textView.textColor = .black
cbVideoId.textView.textColor = .black
cbEIdOnServer.textView.textColor = .black
cbAutoIdOnServer.textView.text = "AutoIdOnServer"
cbPayOnServer.textView.text = "PayOnServer"
cbVideoId.textView.text = "VideoId"
cbEIdOnServer.textView.text = "EIdOnServer"
}
@IBAction func touchStartButton(_ sender: Any) {
clearLog()
writeLog(entry: "Starting…")
createCoreSdk()
}
// MARK: Create MetaPlugin
var metaPlugin: MetaPlugin!
/// Creates the the meta-plugin instance from the existing credentials.
private func createCoreSdk() {
writeLog(entry: "Creating Meta Plugin…")
// actual creation of the core SDK
do {
let env = EWebIDEnv.TEST
metaPlugin = MetaPlugin(
username: env.username,
apiKey: env.apiKey,
env: try WebIdSdkEnvironment(
url: env.uri,
pinningCertificates: env.pinningCerts
),
plugins: getChosenPlugins()
)
writeLog(entry: "Meta Plugin creation successful")
verifyActionId()
} catch {
writeLog(entry: "Meta Plugin creation failed")
}
}
// MARK: Verify Action-ID
/// Calls the verify action-id method asynchronously to start the process.
private func verifyActionId() {
writeLog(entry: "Verifying Action-ID…")
Task {
do {
let result = try await metaPlugin.verify(for: Credentials.actionId)
verifyActionIdCallback(result: .success(result))
} catch {
verifyActionIdCallback(result: .failure(error))
}
}
}
/**
* Callback for the asynchronous verify call.
*
* - Parameters:
* - result The result, containing the VerifyActionIdResult of the call
*/
@MainActor
private func verifyActionIdCallback(result: Result<VerifyActionIdResult, Error>) {
switch result {
case .success(let verifyActionIdResult):
writeLog(entry: "Verification successful")
startMetaPlugin(with: verifyActionIdResult)
case .failure(let error):
writeLog(entry: "Verification failed: \(error.localizedDescription)")
}
}
// MARK: Start MetaPlugin
/**
* Reads the given Configs and starts the plugin.
*
* - Parameters:
* - verifyActionIdResult: result of the verify action-id call
*/
private func startMetaPlugin(with verifyActionIdResult: VerifyActionIdResult) {
writeLog(entry: "Starting MetaPlugin...")
do {
try metaPlugin.startPlugin(
parentVC: self,
delegate: self,
lightTheme: CustomizedPluginTheme.getLightVersion(),
darkTheme: CustomizedPluginTheme.getDarkVersion()
)
} catch {
writeLog(entry: "Start Failed:\n\(error.localizedDescription)")
}
}
/**
* Successful delegate callback for the plugin.
*
* - Parameters:
* - additionalResult: extra info from the plugin
* - processFinished: irrelevant for this plugin
*/
func finishedSuccess(additionalResult: String?, processFinished: Bool) {
writeLog(entry: "Product Journey finished successfully")
}
/**
* Failed delegate callback for the plugin with a plugin-specific error.
*
* - Parameters:
* - failreason: the reason for the failure of the plugin, handle according to documentation
* - additionalResult: extra info from the plugin
*/
func finishedFailed(
failreasonContainer: WebIdPluginCore.PluginFailReasonContainer,
additionalResult: String?,
faultOriginator: String
) {
if let container = failreasonContainer as? AutoIdOnServerProductPluginFailReasonContainer {
writeLog(entry: "Product journey finished with failure:\n\(container.failreason)")
}
}
/**
* Failed delegate callback for the plugin with a generic error.
*
* - Parameters:
* - failreason: the reason for the failure of the plugin, handle according to documentation
* - additionalResult: extra info from the plugin
*/
func finishedFailed(
failreason: EProductPluginErrors,
additionalResult: String?,
faultOriginator: String
) {
writeLog(entry: "Product journey finished with failure:\n\(failreason.self)")
}
// MARK: Plugin chooser
private func getChosenPlugins() -> [any IProductPluginWebId] {
var plugins = [any IProductPluginWebId]()
if cbAutoIdOnServer.isChecked {
plugins.append(AutoIdentOnServerProductPlugin())
}
if cbPayOnServer.isChecked {
plugins.append(PayOnServerProductPlugin())
}
if cbVideoId.isChecked {
plugins.append(VideoIdentProductPlugin())
}
if cbEIdOnServer.isChecked {
plugins.append(EidOnServerProductPlugin())
}
return plugins
}
// MARK: PickerView delegate
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return EMetaPluginMode.allCases.count
}
// The data to return for the row and component (column) that's being passed in
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return EMetaPluginMode.allCases[row].rawValue
}
// Capture the picker view selection
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
metaPluginExecutionMode = EMetaPluginMode.allCases[row]
}
// MARK: logging methods
/**
* Add an entry to the log.
*
* - Parameters:
* - entry: the new line for the log
*/
private func writeLog(entry: String) {
log.text = log.text + entry + "\n"
}
/// Resets the text log of this activity.
private func clearLog() {
log.text = ""
}
func infoAlert(_ message: String, go: ((UIAlertAction) -> Void)? = nil) {
let alertController = UIAlertController(
title: "Info",
message: message,
preferredStyle: UIAlertController.Style.alert
)
alertController.addAction(UIAlertAction(
title: "OK",
style: UIAlertAction.Style.default,
handler: go
))
self.present(
alertController,
animated: true,
completion: nil
)
}
}

View File

@ -0,0 +1,26 @@
//
// Created by WebID Solutions GmbH | www.webid-solutions.de.
// See the file "LICENSE" for the full license governing this code.
//
import XCTest
@testable import MetaPluginDemo
class MetaPluginDemoTests: 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.
}
}

View File

@ -0,0 +1,30 @@
//
// Created by WebID Solutions GmbH | www.webid-solutions.de.
// See the file "LICENSE" for the full license governing this code.
//
import XCTest
class MetaPluginDemoUITests: 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 its 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.
}
}

View File

@ -0,0 +1,30 @@
//
// Created by WebID Solutions GmbH | www.webid-solutions.de.
// See the file "LICENSE" for the full license governing this code.
//
import XCTest
class MetaPluginDemoUITestsLaunchTests: 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)
}
}

8
README.md Normal file → Executable file
View File

@ -21,16 +21,22 @@ From the process creation request to the server, you should have received an act
Insert this number in the Credentials class, by replacing the placeholder string with the action-id as a string.</br>
After that, start the demo app on an iOS device.</br>
The app allows you to pick and choose which plugins to add at runtime.
Check the boxes for the plugins you wish to add.</br>
If necessary, the plugin's mode can be set to a given debug scenario.
We recommend the usage of the live mode instead.<br>
Press the main button on the Main screen to start the plugin during runtime.
## Fastened Tutorial
<ol>
<li>Generate the Credentials.swift file</li>
<li>Replace placeholder strings in Credentials.swift</li>
<li>Create process via mobile api</li>
<li>Replace placeholder string of action-id with action-id from process-creation response</li>
<li>Start plugin</li>
<li>Start App</li>
<li>Choose which plugins to add</li>
<li>Click main button of the Main Screen to start the plugin</li>
</ol>