Skip to content

Commit af83daa

Browse files
committed
Add demo app
Add client sample (google chrome) Big readme.md update Utility method for URL scheme from plist
1 parent f978c16 commit af83daa

File tree

25 files changed

+2031
-38
lines changed

25 files changed

+2031
-38
lines changed

CallbackURLKit.podspec

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Pod::Spec.new do |s|
22

33
# ――― Spec Metadata ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――― #
44
s.name = "CallbackURLKit"
5-
s.version = "0.0.1"
5+
s.version = "0.1.0"
66
s.summary = "Implemenation of x-callback-url in swift"
77
s.homepage = "https://github.com/phimage/CallbackURLKit"
88

@@ -28,4 +28,9 @@ Pod::Spec.new do |s|
2828
sp.source_files = "CallbackURLKit/*.swift"
2929
end
3030

31+
s.subspec "GoogleChrome" do |sp|
32+
sp.source_files = "Clients/GoogleChrome.swift"
33+
sp.dependency 'CallbackURLKit/Core'
34+
end
35+
3136
end

CallbackURLKit.xcodeproj/project.pbxproj

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
C4A8D51E1C37E11F00DB3306 /* Manager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A8D51D1C37E11F00DB3306 /* Manager.swift */; };
2020
C4A8D5201C380F5100DB3306 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A8D51F1C380F5100DB3306 /* Request.swift */; };
2121
C4A8D5221C380F6B00DB3306 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4A8D5211C380F6B00DB3306 /* Extensions.swift */; };
22+
C4E32D591C398AE1005CD033 /* CallbackURLKitClients.h in Headers */ = {isa = PBXBuildFile; fileRef = C4E32D581C398AE1005CD033 /* CallbackURLKitClients.h */; settings = {ATTRIBUTES = (Public, ); }; };
23+
C4E32D5E1C398AE5005CD033 /* GoogleChrome.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E32D4F1C398AAC005CD033 /* GoogleChrome.swift */; };
2224
/* End PBXBuildFile section */
2325

2426
/* Begin PBXFileReference section */
@@ -33,6 +35,10 @@
3335
C4A8D51D1C37E11F00DB3306 /* Manager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Manager.swift; sourceTree = "<group>"; };
3436
C4A8D51F1C380F5100DB3306 /* Request.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Request.swift; sourceTree = "<group>"; };
3537
C4A8D5211C380F6B00DB3306 /* Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Extensions.swift; sourceTree = "<group>"; };
38+
C4E32D4F1C398AAC005CD033 /* GoogleChrome.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = GoogleChrome.swift; path = Clients/GoogleChrome.swift; sourceTree = "<group>"; };
39+
C4E32D561C398AE1005CD033 /* CallbackURLKitClients.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CallbackURLKitClients.framework; sourceTree = BUILT_PRODUCTS_DIR; };
40+
C4E32D581C398AE1005CD033 /* CallbackURLKitClients.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CallbackURLKitClients.h; sourceTree = "<group>"; };
41+
C4E32D5A1C398AE1005CD033 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3642
/* End PBXFileReference section */
3743

3844
/* Begin PBXFrameworksBuildPhase section */
@@ -50,6 +56,13 @@
5056
);
5157
runOnlyForDeploymentPostprocessing = 0;
5258
};
59+
C4E32D521C398AE1005CD033 /* Frameworks */ = {
60+
isa = PBXFrameworksBuildPhase;
61+
buildActionMask = 2147483647;
62+
files = (
63+
);
64+
runOnlyForDeploymentPostprocessing = 0;
65+
};
5366
/* End PBXFrameworksBuildPhase section */
5467

5568
/* Begin PBXGroup section */
@@ -67,6 +80,8 @@
6780
children = (
6881
C4A8D5121C37D84A00DB3306 /* CallbackURLKit */,
6982
C418B1DB1C386C160097FDD9 /* CallbackURLKitOSX */,
83+
C4E32D501C398AAE005CD033 /* Clients */,
84+
C4E32D571C398AE1005CD033 /* CallbackURLKitClients */,
7085
C4A8D5111C37D84A00DB3306 /* Products */,
7186
);
7287
sourceTree = "<group>";
@@ -76,6 +91,7 @@
7691
children = (
7792
C4A8D5101C37D84A00DB3306 /* CallbackURLKit.framework */,
7893
C418B1DA1C386C160097FDD9 /* CallbackURLKit.framework */,
94+
C4E32D561C398AE1005CD033 /* CallbackURLKitClients.framework */,
7995
);
8096
name = Products;
8197
sourceTree = "<group>";
@@ -94,6 +110,23 @@
94110
path = CallbackURLKit;
95111
sourceTree = "<group>";
96112
};
113+
C4E32D501C398AAE005CD033 /* Clients */ = {
114+
isa = PBXGroup;
115+
children = (
116+
C4E32D4F1C398AAC005CD033 /* GoogleChrome.swift */,
117+
);
118+
name = Clients;
119+
sourceTree = "<group>";
120+
};
121+
C4E32D571C398AE1005CD033 /* CallbackURLKitClients */ = {
122+
isa = PBXGroup;
123+
children = (
124+
C4E32D581C398AE1005CD033 /* CallbackURLKitClients.h */,
125+
C4E32D5A1C398AE1005CD033 /* Info.plist */,
126+
);
127+
path = CallbackURLKitClients;
128+
sourceTree = "<group>";
129+
};
97130
/* End PBXGroup section */
98131

99132
/* Begin PBXHeadersBuildPhase section */
@@ -113,6 +146,14 @@
113146
);
114147
runOnlyForDeploymentPostprocessing = 0;
115148
};
149+
C4E32D531C398AE1005CD033 /* Headers */ = {
150+
isa = PBXHeadersBuildPhase;
151+
buildActionMask = 2147483647;
152+
files = (
153+
C4E32D591C398AE1005CD033 /* CallbackURLKitClients.h in Headers */,
154+
);
155+
runOnlyForDeploymentPostprocessing = 0;
156+
};
116157
/* End PBXHeadersBuildPhase section */
117158

118159
/* Begin PBXNativeTarget section */
@@ -152,6 +193,24 @@
152193
productReference = C4A8D5101C37D84A00DB3306 /* CallbackURLKit.framework */;
153194
productType = "com.apple.product-type.framework";
154195
};
196+
C4E32D551C398AE1005CD033 /* CallbackURLKitClients */ = {
197+
isa = PBXNativeTarget;
198+
buildConfigurationList = C4E32D5B1C398AE1005CD033 /* Build configuration list for PBXNativeTarget "CallbackURLKitClients" */;
199+
buildPhases = (
200+
C4E32D511C398AE1005CD033 /* Sources */,
201+
C4E32D521C398AE1005CD033 /* Frameworks */,
202+
C4E32D531C398AE1005CD033 /* Headers */,
203+
C4E32D541C398AE1005CD033 /* Resources */,
204+
);
205+
buildRules = (
206+
);
207+
dependencies = (
208+
);
209+
name = CallbackURLKitClients;
210+
productName = CallbackURLKitClients;
211+
productReference = C4E32D561C398AE1005CD033 /* CallbackURLKitClients.framework */;
212+
productType = "com.apple.product-type.framework";
213+
};
155214
/* End PBXNativeTarget section */
156215

157216
/* Begin PBXProject section */
@@ -167,6 +226,9 @@
167226
C4A8D50F1C37D84A00DB3306 = {
168227
CreatedOnToolsVersion = 7.2;
169228
};
229+
C4E32D551C398AE1005CD033 = {
230+
CreatedOnToolsVersion = 7.2;
231+
};
170232
};
171233
};
172234
buildConfigurationList = C4A8D50A1C37D84A00DB3306 /* Build configuration list for PBXProject "CallbackURLKit" */;
@@ -183,6 +245,7 @@
183245
targets = (
184246
C4A8D50F1C37D84A00DB3306 /* CallbackURLKit */,
185247
C418B1D91C386C160097FDD9 /* CallbackURLKitOSX */,
248+
C4E32D551C398AE1005CD033 /* CallbackURLKitClients */,
186249
);
187250
};
188251
/* End PBXProject section */
@@ -202,6 +265,13 @@
202265
);
203266
runOnlyForDeploymentPostprocessing = 0;
204267
};
268+
C4E32D541C398AE1005CD033 /* Resources */ = {
269+
isa = PBXResourcesBuildPhase;
270+
buildActionMask = 2147483647;
271+
files = (
272+
);
273+
runOnlyForDeploymentPostprocessing = 0;
274+
};
205275
/* End PBXResourcesBuildPhase section */
206276

207277
/* Begin PBXSourcesBuildPhase section */
@@ -229,6 +299,14 @@
229299
);
230300
runOnlyForDeploymentPostprocessing = 0;
231301
};
302+
C4E32D511C398AE1005CD033 /* Sources */ = {
303+
isa = PBXSourcesBuildPhase;
304+
buildActionMask = 2147483647;
305+
files = (
306+
C4E32D5E1C398AE5005CD033 /* GoogleChrome.swift in Sources */,
307+
);
308+
runOnlyForDeploymentPostprocessing = 0;
309+
};
232310
/* End PBXSourcesBuildPhase section */
233311

234312
/* Begin XCBuildConfiguration section */
@@ -398,6 +476,38 @@
398476
};
399477
name = Release;
400478
};
479+
C4E32D5C1C398AE1005CD033 /* Debug */ = {
480+
isa = XCBuildConfiguration;
481+
buildSettings = {
482+
DEFINES_MODULE = YES;
483+
DYLIB_COMPATIBILITY_VERSION = 1;
484+
DYLIB_CURRENT_VERSION = 1;
485+
DYLIB_INSTALL_NAME_BASE = "@rpath";
486+
INFOPLIST_FILE = CallbackURLKitClients/Info.plist;
487+
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
488+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
489+
PRODUCT_BUNDLE_IDENTIFIER = fr.phimage.CallbackURLKitClients;
490+
PRODUCT_NAME = "$(TARGET_NAME)";
491+
SKIP_INSTALL = YES;
492+
};
493+
name = Debug;
494+
};
495+
C4E32D5D1C398AE1005CD033 /* Release */ = {
496+
isa = XCBuildConfiguration;
497+
buildSettings = {
498+
DEFINES_MODULE = YES;
499+
DYLIB_COMPATIBILITY_VERSION = 1;
500+
DYLIB_CURRENT_VERSION = 1;
501+
DYLIB_INSTALL_NAME_BASE = "@rpath";
502+
INFOPLIST_FILE = CallbackURLKitClients/Info.plist;
503+
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
504+
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
505+
PRODUCT_BUNDLE_IDENTIFIER = fr.phimage.CallbackURLKitClients;
506+
PRODUCT_NAME = "$(TARGET_NAME)";
507+
SKIP_INSTALL = YES;
508+
};
509+
name = Release;
510+
};
401511
/* End XCBuildConfiguration section */
402512

403513
/* Begin XCConfigurationList section */
@@ -408,6 +518,7 @@
408518
C418B1E11C386C160097FDD9 /* Release */,
409519
);
410520
defaultConfigurationIsVisible = 0;
521+
defaultConfigurationName = Release;
411522
};
412523
C4A8D50A1C37D84A00DB3306 /* Build configuration list for PBXProject "CallbackURLKit" */ = {
413524
isa = XCConfigurationList;
@@ -427,6 +538,14 @@
427538
defaultConfigurationIsVisible = 0;
428539
defaultConfigurationName = Release;
429540
};
541+
C4E32D5B1C398AE1005CD033 /* Build configuration list for PBXNativeTarget "CallbackURLKitClients" */ = {
542+
isa = XCConfigurationList;
543+
buildConfigurations = (
544+
C4E32D5C1C398AE1005CD033 /* Debug */,
545+
C4E32D5D1C398AE1005CD033 /* Release */,
546+
);
547+
defaultConfigurationIsVisible = 0;
548+
};
430549
/* End XCConfigurationList section */
431550
};
432551
rootObject = C4A8D5071C37D84A00DB3306 /* Project object */;

CallbackURLKit.xcodeproj/xcshareddata/xcschemes/CallbackURLKitOSX.xcscheme

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<BuildableReference
1616
BuildableIdentifier = "primary"
1717
BlueprintIdentifier = "C418B1D91C386C160097FDD9"
18-
BuildableName = "CallbackURLKitOSX.framework"
18+
BuildableName = "CallbackURLKit.framework"
1919
BlueprintName = "CallbackURLKitOSX"
2020
ReferencedContainer = "container:CallbackURLKit.xcodeproj">
2121
</BuildableReference>
@@ -46,7 +46,7 @@
4646
<BuildableReference
4747
BuildableIdentifier = "primary"
4848
BlueprintIdentifier = "C418B1D91C386C160097FDD9"
49-
BuildableName = "CallbackURLKitOSX.framework"
49+
BuildableName = "CallbackURLKit.framework"
5050
BlueprintName = "CallbackURLKitOSX"
5151
ReferencedContainer = "container:CallbackURLKit.xcodeproj">
5252
</BuildableReference>
@@ -64,7 +64,7 @@
6464
<BuildableReference
6565
BuildableIdentifier = "primary"
6666
BlueprintIdentifier = "C418B1D91C386C160097FDD9"
67-
BuildableName = "CallbackURLKitOSX.framework"
67+
BuildableName = "CallbackURLKit.framework"
6868
BlueprintName = "CallbackURLKitOSX"
6969
ReferencedContainer = "container:CallbackURLKit.xcodeproj">
7070
</BuildableReference>

CallbackURLKit/CallbackURLKit.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public typealias ActionHandler = (Parameters, SuccessCallback, FailureCallback,
3232
public typealias Parameters = [String: String]
3333

3434
// Callback for response
35-
public typealias SuccessCallback = (result : [String: String]) -> Void
35+
public typealias SuccessCallback = (Parameters?) -> Void
3636
public typealias FailureCallback = (FailureCallbackErrorType) -> Void
3737
public typealias CancelCallback = () -> Void
3838

@@ -41,17 +41,17 @@ public typealias CancelCallback = () -> Void
4141

4242

4343
// Perform an action on client application
44-
// - Parameter URLScheme: The URLScheme for application to apply action.
4544
// - Parameter action: The action to perform.
45+
// - Parameter URLScheme: The URLScheme for application to apply action.
4646
// - Parameter parameters: Optional parameters for the action.
4747
// - Parameter onSuccess: callback for success.
4848
// - Parameter onFailure: callback for failure.
4949
// - Parameter onCancel: callback for cancel.
5050
//
5151
// Throws: CallbackURLKitError
52-
public func performAction(URLScheme: String, action: Action, parameters: Parameters = [:],
52+
public func performAction(action: Action, URLScheme: String, parameters: Parameters = [:],
5353
onSuccess: SuccessCallback? = nil, onFailure: FailureCallback? = nil, onCancel: CancelCallback? = nil) throws {
54-
try Manager.performAction(URLScheme, action: action, parameters: parameters, onSuccess: onSuccess, onFailure: onFailure, onCancel: onCancel)
54+
try Manager.performAction(action, URLScheme: URLScheme, parameters: parameters, onSuccess: onSuccess, onFailure: onFailure, onCancel: onCancel)
5555
}
5656

5757
public func registerAction(action: Action, actionHandler: ActionHandler) {
@@ -68,6 +68,7 @@ public protocol FailureCallbackErrorType: ErrorType {
6868
let CallbackURLKitErrorDomain = "CallbackURLKit"
6969
public let ErrorNotSupportedAction = 1 // "(action) not supported by (appName)"
7070
public let ErrorMissingParameter = 2 // when handling an action, could return an error to show that parameters are missing
71+
public let ErrorMissingErrorCode = 3
7172

7273
extension NSError: FailureCallbackErrorType {
7374
public var message: String { return localizedDescription }

CallbackURLKit/Client.swift

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public class Client {
5656
// - Parameter onCancel: callback for cancel.
5757
//
5858
// Throws: CallbackURLKitError
59-
59+
6060
public func performAction(action: Action, parameters: Parameters = [:],
6161
onSuccess: SuccessCallback? = nil, onFailure: FailureCallback? = nil, onCancel: CancelCallback? = nil) throws {
6262

@@ -69,11 +69,16 @@ public class Client {
6969
let manager = self.manager ?? Manager.sharedInstance
7070
try manager.sendRequest(request)
7171
}
72-
72+
7373
// Return an error according to url, could be changed to fulfiled your need
7474
public func errorForCode(code: String?, message: String?) -> FailureCallbackErrorType {
75-
let codeInt = 30 //TODO convert string to int
76-
75+
let codeInt: Int
76+
if let c = code, ci = Int(c) {
77+
codeInt = ci
78+
} else {
79+
codeInt = ErrorMissingErrorCode
80+
}
81+
7782
var userInfo = [String: String]()
7883
if let msg = message {
7984
userInfo[NSLocalizedDescriptionKey] = msg

0 commit comments

Comments
 (0)