Add a dummy auto fill extension
This commit is contained in:
parent
28e5328298
commit
a860b574bb
6 changed files with 350 additions and 1 deletions
|
|
@ -20,6 +20,12 @@
|
||||||
A239F51F2157B72700576CBF /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A239F51E2157B72700576CBF /* StringExtension.swift */; };
|
A239F51F2157B72700576CBF /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A239F51E2157B72700576CBF /* StringExtension.swift */; };
|
||||||
A239F5212157B75E00576CBF /* FileManagerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A239F5202157B75E00576CBF /* FileManagerExtension.swift */; };
|
A239F5212157B75E00576CBF /* FileManagerExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = A239F5202157B75E00576CBF /* FileManagerExtension.swift */; };
|
||||||
A239F5612157EEB000576CBF /* PasscodeExtensionDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = A28C66671EF10EC900A398A1 /* PasscodeExtensionDisplay.swift */; };
|
A239F5612157EEB000576CBF /* PasscodeExtensionDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = A28C66671EF10EC900A398A1 /* PasscodeExtensionDisplay.swift */; };
|
||||||
|
A239F5902158C07D00576CBF /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A239F58F2158C07D00576CBF /* AuthenticationServices.framework */; };
|
||||||
|
A239F5962158C08C00576CBF /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A239F58F2158C07D00576CBF /* AuthenticationServices.framework */; };
|
||||||
|
A239F5992158C08C00576CBF /* CredentialProviderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A239F5982158C08C00576CBF /* CredentialProviderViewController.swift */; };
|
||||||
|
A239F59C2158C08C00576CBF /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A239F59A2158C08C00576CBF /* MainInterface.storyboard */; };
|
||||||
|
A239F5A12158C08C00576CBF /* passAutoFillExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = A239F5952158C08B00576CBF /* passAutoFillExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
|
A239F5A52158C3F400576CBF /* passKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A26075781EEC6F34005DB03E /* passKit.framework */; };
|
||||||
A26075811EEC6F34005DB03E /* passKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A26075781EEC6F34005DB03E /* passKit.framework */; };
|
A26075811EEC6F34005DB03E /* passKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A26075781EEC6F34005DB03E /* passKit.framework */; };
|
||||||
A26075881EEC6F34005DB03E /* passKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A26075871EEC6F34005DB03E /* passKitTests.swift */; };
|
A26075881EEC6F34005DB03E /* passKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A26075871EEC6F34005DB03E /* passKitTests.swift */; };
|
||||||
A260758A1EEC6F34005DB03E /* passKit.h in Headers */ = {isa = PBXBuildFile; fileRef = A260757A1EEC6F34005DB03E /* passKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
A260758A1EEC6F34005DB03E /* passKit.h in Headers */ = {isa = PBXBuildFile; fileRef = A260757A1EEC6F34005DB03E /* passKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
|
|
@ -97,6 +103,13 @@
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
A239F59F2158C08C00576CBF /* PBXContainerItemProxy */ = {
|
||||||
|
isa = PBXContainerItemProxy;
|
||||||
|
containerPortal = DC917BCB1E2E8231000FDF54 /* Project object */;
|
||||||
|
proxyType = 1;
|
||||||
|
remoteGlobalIDString = A239F5942158C08B00576CBF;
|
||||||
|
remoteInfo = passAutoFillExtension;
|
||||||
|
};
|
||||||
A26075821EEC6F34005DB03E /* PBXContainerItemProxy */ = {
|
A26075821EEC6F34005DB03E /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = DC917BCB1E2E8231000FDF54 /* Project object */;
|
containerPortal = DC917BCB1E2E8231000FDF54 /* Project object */;
|
||||||
|
|
@ -153,6 +166,7 @@
|
||||||
dstSubfolderSpec = 13;
|
dstSubfolderSpec = 13;
|
||||||
files = (
|
files = (
|
||||||
A267002E1EEC466A00176B8A /* passExtension.appex in Embed App Extensions */,
|
A267002E1EEC466A00176B8A /* passExtension.appex in Embed App Extensions */,
|
||||||
|
A239F5A12158C08C00576CBF /* passAutoFillExtension.appex in Embed App Extensions */,
|
||||||
);
|
);
|
||||||
name = "Embed App Extensions";
|
name = "Embed App Extensions";
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
|
@ -180,6 +194,12 @@
|
||||||
A2367B9F1EF0387000C8FE8B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
A2367B9F1EF0387000C8FE8B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
A239F51E2157B72700576CBF /* StringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StringExtension.swift; path = Helpers/StringExtension.swift; sourceTree = "<group>"; };
|
A239F51E2157B72700576CBF /* StringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StringExtension.swift; path = Helpers/StringExtension.swift; sourceTree = "<group>"; };
|
||||||
A239F5202157B75E00576CBF /* FileManagerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = FileManagerExtension.swift; path = Helpers/FileManagerExtension.swift; sourceTree = "<group>"; };
|
A239F5202157B75E00576CBF /* FileManagerExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = FileManagerExtension.swift; path = Helpers/FileManagerExtension.swift; sourceTree = "<group>"; };
|
||||||
|
A239F58F2158C07D00576CBF /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; };
|
||||||
|
A239F5952158C08B00576CBF /* passAutoFillExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = passAutoFillExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
|
A239F5982158C08C00576CBF /* CredentialProviderViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CredentialProviderViewController.swift; sourceTree = "<group>"; };
|
||||||
|
A239F59B2158C08C00576CBF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
|
||||||
|
A239F59D2158C08C00576CBF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
A239F59E2158C08C00576CBF /* passAutoFillExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = passAutoFillExtension.entitlements; sourceTree = "<group>"; };
|
||||||
A26075781EEC6F34005DB03E /* passKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = passKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
A26075781EEC6F34005DB03E /* passKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = passKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
A260757A1EEC6F34005DB03E /* passKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = passKit.h; sourceTree = "<group>"; };
|
A260757A1EEC6F34005DB03E /* passKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = passKit.h; sourceTree = "<group>"; };
|
||||||
A260757B1EEC6F34005DB03E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
A260757B1EEC6F34005DB03E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
|
|
@ -278,6 +298,15 @@
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
A239F5922158C08B00576CBF /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
A239F5A52158C3F400576CBF /* passKit.framework in Frameworks */,
|
||||||
|
A239F5962158C08C00576CBF /* AuthenticationServices.framework in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
A26075741EEC6F34005DB03E /* Frameworks */ = {
|
A26075741EEC6F34005DB03E /* Frameworks */ = {
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
|
@ -320,6 +349,7 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
A239F5902158C07D00576CBF /* AuthenticationServices.framework in Frameworks */,
|
||||||
A260758D1EEC6F34005DB03E /* passKit.framework in Frameworks */,
|
A260758D1EEC6F34005DB03E /* passKit.framework in Frameworks */,
|
||||||
DCC408C71E307DBB00F29B0E /* SVProgressHUD.framework in Frameworks */,
|
DCC408C71E307DBB00F29B0E /* SVProgressHUD.framework in Frameworks */,
|
||||||
18F19A67B0C07F13C17169E0 /* Pods_pass.framework in Frameworks */,
|
18F19A67B0C07F13C17169E0 /* Pods_pass.framework in Frameworks */,
|
||||||
|
|
@ -345,6 +375,17 @@
|
||||||
name = Helpers;
|
name = Helpers;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
A239F5972158C08C00576CBF /* passAutoFillExtension */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
A239F5982158C08C00576CBF /* CredentialProviderViewController.swift */,
|
||||||
|
A239F59A2158C08C00576CBF /* MainInterface.storyboard */,
|
||||||
|
A239F59D2158C08C00576CBF /* Info.plist */,
|
||||||
|
A239F59E2158C08C00576CBF /* passAutoFillExtension.entitlements */,
|
||||||
|
);
|
||||||
|
path = passAutoFillExtension;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
A26075791EEC6F34005DB03E /* passKit */ = {
|
A26075791EEC6F34005DB03E /* passKit */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
|
@ -522,6 +563,7 @@
|
||||||
A26700251EEC466A00176B8A /* passExtension */,
|
A26700251EEC466A00176B8A /* passExtension */,
|
||||||
A26075791EEC6F34005DB03E /* passKit */,
|
A26075791EEC6F34005DB03E /* passKit */,
|
||||||
A26075861EEC6F34005DB03E /* passKitTests */,
|
A26075861EEC6F34005DB03E /* passKitTests */,
|
||||||
|
A239F5972158C08C00576CBF /* passAutoFillExtension */,
|
||||||
DC917BD41E2E8231000FDF54 /* Products */,
|
DC917BD41E2E8231000FDF54 /* Products */,
|
||||||
DC917BED1E2F38C4000FDF54 /* Frameworks */,
|
DC917BED1E2F38C4000FDF54 /* Frameworks */,
|
||||||
A51B01737D08DB47BB58F85A /* Pods */,
|
A51B01737D08DB47BB58F85A /* Pods */,
|
||||||
|
|
@ -536,6 +578,7 @@
|
||||||
A26700241EEC466A00176B8A /* passExtension.appex */,
|
A26700241EEC466A00176B8A /* passExtension.appex */,
|
||||||
A26075781EEC6F34005DB03E /* passKit.framework */,
|
A26075781EEC6F34005DB03E /* passKit.framework */,
|
||||||
A26075801EEC6F34005DB03E /* passKitTests.xctest */,
|
A26075801EEC6F34005DB03E /* passKitTests.xctest */,
|
||||||
|
A239F5952158C08B00576CBF /* passAutoFillExtension.appex */,
|
||||||
);
|
);
|
||||||
name = Products;
|
name = Products;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
@ -560,6 +603,7 @@
|
||||||
DC917BED1E2F38C4000FDF54 /* Frameworks */ = {
|
DC917BED1E2F38C4000FDF54 /* Frameworks */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
A239F58F2158C07D00576CBF /* AuthenticationServices.framework */,
|
||||||
A2A61C101EEF8E3500CFE063 /* libPods-passKit.a */,
|
A2A61C101EEF8E3500CFE063 /* libPods-passKit.a */,
|
||||||
A2A61C0C1EEF8DFE00CFE063 /* libPods-passExtension.a */,
|
A2A61C0C1EEF8DFE00CFE063 /* libPods-passExtension.a */,
|
||||||
A2227D541EEE5E78002A69A9 /* libObjectivePGP.a */,
|
A2227D541EEE5E78002A69A9 /* libObjectivePGP.a */,
|
||||||
|
|
@ -600,6 +644,23 @@
|
||||||
/* End PBXHeadersBuildPhase section */
|
/* End PBXHeadersBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXNativeTarget section */
|
/* Begin PBXNativeTarget section */
|
||||||
|
A239F5942158C08B00576CBF /* passAutoFillExtension */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = A239F5A22158C08C00576CBF /* Build configuration list for PBXNativeTarget "passAutoFillExtension" */;
|
||||||
|
buildPhases = (
|
||||||
|
A239F5912158C08B00576CBF /* Sources */,
|
||||||
|
A239F5922158C08B00576CBF /* Frameworks */,
|
||||||
|
A239F5932158C08B00576CBF /* Resources */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = passAutoFillExtension;
|
||||||
|
productName = passAutoFillExtension;
|
||||||
|
productReference = A239F5952158C08B00576CBF /* passAutoFillExtension.appex */;
|
||||||
|
productType = "com.apple.product-type.app-extension";
|
||||||
|
};
|
||||||
A26075771EEC6F34005DB03E /* passKit */ = {
|
A26075771EEC6F34005DB03E /* passKit */ = {
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = A260758F1EEC6F34005DB03E /* Build configuration list for PBXNativeTarget "passKit" */;
|
buildConfigurationList = A260758F1EEC6F34005DB03E /* Build configuration list for PBXNativeTarget "passKit" */;
|
||||||
|
|
@ -694,6 +755,7 @@
|
||||||
dependencies = (
|
dependencies = (
|
||||||
A267002D1EEC466A00176B8A /* PBXTargetDependency */,
|
A267002D1EEC466A00176B8A /* PBXTargetDependency */,
|
||||||
A260758C1EEC6F34005DB03E /* PBXTargetDependency */,
|
A260758C1EEC6F34005DB03E /* PBXTargetDependency */,
|
||||||
|
A239F5A02158C08C00576CBF /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = pass;
|
name = pass;
|
||||||
productName = pass;
|
productName = pass;
|
||||||
|
|
@ -706,10 +768,23 @@
|
||||||
DC917BCB1E2E8231000FDF54 /* Project object */ = {
|
DC917BCB1E2E8231000FDF54 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastSwiftUpdateCheck = 0830;
|
LastSwiftUpdateCheck = 1000;
|
||||||
LastUpgradeCheck = 0930;
|
LastUpgradeCheck = 0930;
|
||||||
ORGANIZATIONNAME = "Bob Sun";
|
ORGANIZATIONNAME = "Bob Sun";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
|
A239F5942158C08B00576CBF = {
|
||||||
|
CreatedOnToolsVersion = 10.0;
|
||||||
|
DevelopmentTeam = 4WDM8E95VU;
|
||||||
|
ProvisioningStyle = Manual;
|
||||||
|
SystemCapabilities = {
|
||||||
|
com.apple.ApplicationGroups.iOS = {
|
||||||
|
enabled = 1;
|
||||||
|
};
|
||||||
|
com.apple.Keychain = {
|
||||||
|
enabled = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
A26075771EEC6F34005DB03E = {
|
A26075771EEC6F34005DB03E = {
|
||||||
CreatedOnToolsVersion = 8.3.3;
|
CreatedOnToolsVersion = 8.3.3;
|
||||||
LastSwiftMigration = 0900;
|
LastSwiftMigration = 0900;
|
||||||
|
|
@ -751,6 +826,9 @@
|
||||||
com.apple.ApplicationGroups.iOS = {
|
com.apple.ApplicationGroups.iOS = {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
};
|
};
|
||||||
|
com.apple.AutoFillCredentialProvider = {
|
||||||
|
enabled = 1;
|
||||||
|
};
|
||||||
com.apple.Keychain = {
|
com.apple.Keychain = {
|
||||||
enabled = 1;
|
enabled = 1;
|
||||||
};
|
};
|
||||||
|
|
@ -776,11 +854,20 @@
|
||||||
A26700231EEC466A00176B8A /* passExtension */,
|
A26700231EEC466A00176B8A /* passExtension */,
|
||||||
A26075771EEC6F34005DB03E /* passKit */,
|
A26075771EEC6F34005DB03E /* passKit */,
|
||||||
A260757F1EEC6F34005DB03E /* passKitTests */,
|
A260757F1EEC6F34005DB03E /* passKitTests */,
|
||||||
|
A239F5942158C08B00576CBF /* passAutoFillExtension */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
|
|
||||||
/* Begin PBXResourcesBuildPhase section */
|
/* Begin PBXResourcesBuildPhase section */
|
||||||
|
A239F5932158C08B00576CBF /* Resources */ = {
|
||||||
|
isa = PBXResourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
A239F59C2158C08C00576CBF /* MainInterface.storyboard in Resources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
A26075761EEC6F34005DB03E /* Resources */ = {
|
A26075761EEC6F34005DB03E /* Resources */ = {
|
||||||
isa = PBXResourcesBuildPhase;
|
isa = PBXResourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
|
@ -968,6 +1055,14 @@
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
A239F5912158C08B00576CBF /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
A239F5992158C08C00576CBF /* CredentialProviderViewController.swift in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
A26075731EEC6F34005DB03E /* Sources */ = {
|
A26075731EEC6F34005DB03E /* Sources */ = {
|
||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
|
|
@ -1064,6 +1159,11 @@
|
||||||
/* End PBXSourcesBuildPhase section */
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXTargetDependency section */
|
/* Begin PBXTargetDependency section */
|
||||||
|
A239F5A02158C08C00576CBF /* PBXTargetDependency */ = {
|
||||||
|
isa = PBXTargetDependency;
|
||||||
|
target = A239F5942158C08B00576CBF /* passAutoFillExtension */;
|
||||||
|
targetProxy = A239F59F2158C08C00576CBF /* PBXContainerItemProxy */;
|
||||||
|
};
|
||||||
A26075831EEC6F34005DB03E /* PBXTargetDependency */ = {
|
A26075831EEC6F34005DB03E /* PBXTargetDependency */ = {
|
||||||
isa = PBXTargetDependency;
|
isa = PBXTargetDependency;
|
||||||
target = A26075771EEC6F34005DB03E /* passKit */;
|
target = A26075771EEC6F34005DB03E /* passKit */;
|
||||||
|
|
@ -1092,6 +1192,14 @@
|
||||||
/* End PBXTargetDependency section */
|
/* End PBXTargetDependency section */
|
||||||
|
|
||||||
/* Begin PBXVariantGroup section */
|
/* Begin PBXVariantGroup section */
|
||||||
|
A239F59A2158C08C00576CBF /* MainInterface.storyboard */ = {
|
||||||
|
isa = PBXVariantGroup;
|
||||||
|
children = (
|
||||||
|
A239F59B2158C08C00576CBF /* Base */,
|
||||||
|
);
|
||||||
|
name = MainInterface.storyboard;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
A26700281EEC466A00176B8A /* MainInterface.storyboard */ = {
|
A26700281EEC466A00176B8A /* MainInterface.storyboard */ = {
|
||||||
isa = PBXVariantGroup;
|
isa = PBXVariantGroup;
|
||||||
children = (
|
children = (
|
||||||
|
|
@ -1119,6 +1227,59 @@
|
||||||
/* End PBXVariantGroup section */
|
/* End PBXVariantGroup section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
|
A239F5A32158C08C00576CBF /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = passAutoFillExtension/passAutoFillExtension.entitlements;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
CODE_SIGN_STYLE = Manual;
|
||||||
|
DEVELOPMENT_TEAM = 4WDM8E95VU;
|
||||||
|
ENABLE_BITCODE = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
INFOPLIST_FILE = passAutoFillExtension/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||||
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "me.mssun.passforios.auto-fill-credential-extension";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "match Development me.mssun.passforios.auto-fill-credential-extension";
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
SWIFT_VERSION = 4.2;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
A239F5A42158C08C00576CBF /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
|
CODE_SIGN_ENTITLEMENTS = passAutoFillExtension/passAutoFillExtension.entitlements;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
|
CODE_SIGN_STYLE = Manual;
|
||||||
|
DEVELOPMENT_TEAM = 4WDM8E95VU;
|
||||||
|
ENABLE_BITCODE = NO;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
INFOPLIST_FILE = passAutoFillExtension/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||||
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||||
|
MTL_FAST_MATH = YES;
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = "me.mssun.passforios.auto-fill-credential-extension";
|
||||||
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
|
PROVISIONING_PROFILE_SPECIFIER = "match Development me.mssun.passforios.auto-fill-credential-extension";
|
||||||
|
SKIP_INSTALL = YES;
|
||||||
|
SWIFT_VERSION = 4.2;
|
||||||
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
A26075901EEC6F34005DB03E /* Debug */ = {
|
A26075901EEC6F34005DB03E /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 7E088A9255B6CB576EF757C1 /* Pods-passKit.debug.xcconfig */;
|
baseConfigurationReference = 7E088A9255B6CB576EF757C1 /* Pods-passKit.debug.xcconfig */;
|
||||||
|
|
@ -1463,6 +1624,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
|
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
|
||||||
CODE_SIGN_ENTITLEMENTS = pass/pass.entitlements;
|
CODE_SIGN_ENTITLEMENTS = pass/pass.entitlements;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 2;
|
CURRENT_PROJECT_VERSION = 2;
|
||||||
DEFINES_MODULE = NO;
|
DEFINES_MODULE = NO;
|
||||||
|
|
@ -1495,6 +1657,7 @@
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
|
CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = NO;
|
||||||
CODE_SIGN_ENTITLEMENTS = pass/pass.entitlements;
|
CODE_SIGN_ENTITLEMENTS = pass/pass.entitlements;
|
||||||
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
|
||||||
CURRENT_PROJECT_VERSION = 2;
|
CURRENT_PROJECT_VERSION = 2;
|
||||||
DEFINES_MODULE = NO;
|
DEFINES_MODULE = NO;
|
||||||
|
|
@ -1522,6 +1685,15 @@
|
||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
|
A239F5A22158C08C00576CBF /* Build configuration list for PBXNativeTarget "passAutoFillExtension" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
A239F5A32158C08C00576CBF /* Debug */,
|
||||||
|
A239F5A42158C08C00576CBF /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
A260758F1EEC6F34005DB03E /* Build configuration list for PBXNativeTarget "passKit" */ = {
|
A260758F1EEC6F34005DB03E /* Build configuration list for PBXNativeTarget "passKit" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>com.apple.developer.authentication-services.autofill-credential-provider</key>
|
||||||
|
<true/>
|
||||||
<key>com.apple.security.application-groups</key>
|
<key>com.apple.security.application-groups</key>
|
||||||
<array>
|
<array>
|
||||||
<string>group.me.mssun.passforios</string>
|
<string>group.me.mssun.passforios</string>
|
||||||
|
|
|
||||||
57
passAutoFillExtension/Base.lproj/MainInterface.storyboard
Normal file
57
passAutoFillExtension/Base.lproj/MainInterface.storyboard
Normal file
|
|
@ -0,0 +1,57 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14092" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="Xki-Si-B7m">
|
||||||
|
<device id="retina4_7" orientation="portrait">
|
||||||
|
<adaptation id="fullscreen"/>
|
||||||
|
</device>
|
||||||
|
<dependencies>
|
||||||
|
<deployment identifier="iOS"/>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14081.1"/>
|
||||||
|
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||||
|
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<!--Credential Provider View Controller-->
|
||||||
|
<scene sceneID="Uma-9u-xWV">
|
||||||
|
<objects>
|
||||||
|
<viewController id="Xki-Si-B7m" customClass="CredentialProviderViewController" customModuleProvider="target" sceneMemberID="viewController">
|
||||||
|
<view key="view" contentMode="scaleToFill" id="BuU-Ak-iZz">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||||
|
<subviews>
|
||||||
|
<navigationBar contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3wq-kG-lGu">
|
||||||
|
<rect key="frame" x="0.0" y="20" width="375" height="44"/>
|
||||||
|
<items>
|
||||||
|
<navigationItem id="cbj-pk-SYj">
|
||||||
|
<barButtonItem key="leftBarButtonItem" systemItem="cancel" id="bEZ-MG-jDy">
|
||||||
|
<connections>
|
||||||
|
<action selector="cancel:" destination="Xki-Si-B7m" id="6ap-3Q-iEX"/>
|
||||||
|
</connections>
|
||||||
|
</barButtonItem>
|
||||||
|
</navigationItem>
|
||||||
|
</items>
|
||||||
|
</navigationBar>
|
||||||
|
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="a7v-ug-QzG">
|
||||||
|
<rect key="frame" x="87.5" y="327" width="199" height="33"/>
|
||||||
|
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||||
|
<state key="normal" title="Return Example Password"/>
|
||||||
|
<connections>
|
||||||
|
<action selector="passwordSelected:" destination="Xki-Si-B7m" eventType="touchUpInside" id="ODd-lr-mud"/>
|
||||||
|
</connections>
|
||||||
|
</button>
|
||||||
|
</subviews>
|
||||||
|
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||||
|
<constraints>
|
||||||
|
<constraint firstItem="Ky8-vK-JVj" firstAttribute="top" secondItem="3wq-kG-lGu" secondAttribute="top" id="BIN-jb-uNd"/>
|
||||||
|
<constraint firstItem="3wq-kG-lGu" firstAttribute="width" secondItem="BuU-Ak-iZz" secondAttribute="width" id="UkD-v4-BcH"/>
|
||||||
|
<constraint firstItem="a7v-ug-QzG" firstAttribute="centerY" secondItem="Ky8-vK-JVj" secondAttribute="centerY" id="fAC-0v-NFE"/>
|
||||||
|
<constraint firstItem="a7v-ug-QzG" firstAttribute="centerX" secondItem="3wq-kG-lGu" secondAttribute="centerX" id="io1-ZS-gwn"/>
|
||||||
|
<constraint firstItem="3wq-kG-lGu" firstAttribute="centerX" secondItem="BuU-Ak-iZz" secondAttribute="centerX" id="rtV-5c-0bl"/>
|
||||||
|
</constraints>
|
||||||
|
<viewLayoutGuide key="safeArea" id="Ky8-vK-JVj"/>
|
||||||
|
</view>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="RwB-HB-TSk" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
</document>
|
||||||
71
passAutoFillExtension/CredentialProviderViewController.swift
Normal file
71
passAutoFillExtension/CredentialProviderViewController.swift
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
//
|
||||||
|
// CredentialProviderViewController.swift
|
||||||
|
// passAutoFillExtension
|
||||||
|
//
|
||||||
|
// Created by Yishi Lin on 2018/9/24.
|
||||||
|
// Copyright © 2018 Bob Sun. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import AuthenticationServices
|
||||||
|
import passKit
|
||||||
|
|
||||||
|
class CredentialProviderViewController: ASCredentialProviderViewController {
|
||||||
|
|
||||||
|
private lazy var passcodelock: PasscodeExtensionDisplay = {
|
||||||
|
let passcodelock = PasscodeExtensionDisplay(extensionContext: self.extensionContext)
|
||||||
|
return passcodelock
|
||||||
|
}()
|
||||||
|
|
||||||
|
override func viewWillAppear(_ animated: Bool) {
|
||||||
|
super.viewWillAppear(animated)
|
||||||
|
passcodelock.presentPasscodeLockIfNeeded(self)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Prepare your UI to list available credentials for the user to choose from. The items in
|
||||||
|
'serviceIdentifiers' describe the service the user is logging in to, so your extension can
|
||||||
|
prioritize the most relevant credentials in the list.
|
||||||
|
*/
|
||||||
|
override func prepareCredentialList(for serviceIdentifiers: [ASCredentialServiceIdentifier]) {
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Implement this method if your extension support
|
||||||
|
s showing credentials in the QuickType bar.
|
||||||
|
When the user selects a credential from your app, this method will be called with the
|
||||||
|
ASPasswordCredentialIdentity your app has previously saved to the ASCredentialIdentityStore.
|
||||||
|
Provide the password by completing the extension request with the associated ASPasswordCredential.
|
||||||
|
If using the credential would require showing custom UI for authenticating the user, cancel
|
||||||
|
the request with error code ASExtensionError.userInteractionRequired.
|
||||||
|
|
||||||
|
override func provideCredentialWithoutUserInteraction(for credentialIdentity: ASPasswordCredentialIdentity) {
|
||||||
|
let databaseIsUnlocked = true
|
||||||
|
if (databaseIsUnlocked) {
|
||||||
|
let passwordCredential = ASPasswordCredential(user: "j_appleseed", password: "apple1234")
|
||||||
|
self.extensionContext.completeRequest(withSelectedCredential: passwordCredential, completionHandler: nil)
|
||||||
|
} else {
|
||||||
|
self.extensionContext.cancelRequest(withError: NSError(domain: ASExtensionErrorDomain, code:ASExtensionError.userInteractionRequired.rawValue))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Implement this method if provideCredentialWithoutUserInteraction(for:) can fail with
|
||||||
|
ASExtensionError.userInteractionRequired. In this case, the system may present your extension's
|
||||||
|
UI and call this method. Show appropriate UI for authenticating the user then provide the password
|
||||||
|
by completing the extension request with the associated ASPasswordCredential.
|
||||||
|
|
||||||
|
override func prepareInterfaceToProvideCredential(for credentialIdentity: ASPasswordCredentialIdentity) {
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
@IBAction func cancel(_ sender: AnyObject?) {
|
||||||
|
self.extensionContext.cancelRequest(withError: NSError(domain: ASExtensionErrorDomain, code: ASExtensionError.userCanceled.rawValue))
|
||||||
|
}
|
||||||
|
|
||||||
|
@IBAction func passwordSelected(_ sender: AnyObject?) {
|
||||||
|
let passwordCredential = ASPasswordCredential(user: "j_appleseed", password: "apple1234")
|
||||||
|
self.extensionContext.completeRequest(withSelectedCredential: passwordCredential, completionHandler: nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
31
passAutoFillExtension/Info.plist
Normal file
31
passAutoFillExtension/Info.plist
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?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>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
||||||
|
<key>CFBundleDisplayName</key>
|
||||||
|
<string>passAutoFillExtension</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>$(EXECUTABLE_NAME)</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>$(PRODUCT_NAME)</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>XPC!</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>1.0</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>1</string>
|
||||||
|
<key>NSExtension</key>
|
||||||
|
<dict>
|
||||||
|
<key>NSExtensionMainStoryboard</key>
|
||||||
|
<string>MainInterface</string>
|
||||||
|
<key>NSExtensionPointIdentifier</key>
|
||||||
|
<string>com.apple.authentication-services-credential-provider-ui</string>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
16
passAutoFillExtension/passAutoFillExtension.entitlements
Normal file
16
passAutoFillExtension/passAutoFillExtension.entitlements
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?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>com.apple.developer.authentication-services.autofill-credential-provider</key>
|
||||||
|
<true/>
|
||||||
|
<key>com.apple.security.application-groups</key>
|
||||||
|
<array>
|
||||||
|
<string>group.me.mssun.passforios</string>
|
||||||
|
</array>
|
||||||
|
<key>keychain-access-groups</key>
|
||||||
|
<array>
|
||||||
|
<string>$(AppIdentifierPrefix)group.me.mssun.passforios</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue