Skip to content

Commit c8eb265

Browse files
authored
Merge pull request #4 from maxxfrazer/should-request-accept
ShouldRequest and ShouldAccept handlers added.
2 parents f5d9483 + f7518ea commit c8eb265

File tree

5 files changed

+37
-29
lines changed

5 files changed

+37
-29
lines changed

MultipeerHelper+Example/MultipeerHelper+Example.xcodeproj/project.pbxproj

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@
1414
F32BA08D238935140075556C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = F32BA08B238935140075556C /* LaunchScreen.storyboard */; };
1515
F32BA096238936210075556C /* FocusEntity in Frameworks */ = {isa = PBXBuildFile; productRef = F32BA095238936210075556C /* FocusEntity */; };
1616
F32BA0982389B1880075556C /* RealityViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32BA0972389B1880075556C /* RealityViewController.swift */; };
17-
F32BA09E2389B2760075556C /* MultipeerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32BA09C2389B2760075556C /* MultipeerHelper.swift */; };
18-
F32BA09F2389B2760075556C /* MultipeerHelperDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32BA09D2389B2760075556C /* MultipeerHelperDelegate.swift */; };
1917
F32BA0A12389E6AB0075556C /* RealityViewController+Gestures.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32BA0A02389E6AB0075556C /* RealityViewController+Gestures.swift */; };
20-
F3B042F8239D49D700E18DED /* HasSynchronization+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3B042F7239D49D700E18DED /* HasSynchronization+Extensions.swift */; };
18+
F3F3F88A2401658700AC1EBF /* MultipeerHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3F3F8872401658700AC1EBF /* MultipeerHelper.swift */; };
19+
F3F3F88B2401658700AC1EBF /* HasSynchronization+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3F3F8882401658700AC1EBF /* HasSynchronization+Extensions.swift */; };
20+
F3F3F88C2401658700AC1EBF /* MultipeerHelperDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3F3F8892401658700AC1EBF /* MultipeerHelperDelegate.swift */; };
2121
/* End PBXBuildFile section */
2222

2323
/* Begin PBXFileReference section */
@@ -29,10 +29,10 @@
2929
F32BA08C238935140075556C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
3030
F32BA08E238935140075556C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
3131
F32BA0972389B1880075556C /* RealityViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RealityViewController.swift; sourceTree = "<group>"; };
32-
F32BA09C2389B2760075556C /* MultipeerHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MultipeerHelper.swift; path = ../Sources/MultipeerHelper/MultipeerHelper.swift; sourceTree = SOURCE_ROOT; };
33-
F32BA09D2389B2760075556C /* MultipeerHelperDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MultipeerHelperDelegate.swift; path = ../Sources/MultipeerHelper/MultipeerHelperDelegate.swift; sourceTree = SOURCE_ROOT; };
3432
F32BA0A02389E6AB0075556C /* RealityViewController+Gestures.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RealityViewController+Gestures.swift"; sourceTree = "<group>"; };
35-
F3B042F7239D49D700E18DED /* HasSynchronization+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "HasSynchronization+Extensions.swift"; path = "../../../Sources/MultipeerHelper/HasSynchronization+Extensions.swift"; sourceTree = "<group>"; };
33+
F3F3F8872401658700AC1EBF /* MultipeerHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MultipeerHelper.swift; path = ../Sources/MultipeerHelper/MultipeerHelper.swift; sourceTree = SOURCE_ROOT; };
34+
F3F3F8882401658700AC1EBF /* HasSynchronization+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "HasSynchronization+Extensions.swift"; path = "../Sources/MultipeerHelper/HasSynchronization+Extensions.swift"; sourceTree = SOURCE_ROOT; };
35+
F3F3F8892401658700AC1EBF /* MultipeerHelperDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MultipeerHelperDelegate.swift; path = ../Sources/MultipeerHelper/MultipeerHelperDelegate.swift; sourceTree = SOURCE_ROOT; };
3636
/* End PBXFileReference section */
3737

3838
/* Begin PBXFrameworksBuildPhase section */
@@ -73,7 +73,7 @@
7373
F32BA086238935140075556C /* Assets.xcassets */,
7474
F32BA08B238935140075556C /* LaunchScreen.storyboard */,
7575
F32BA08E238935140075556C /* Info.plist */,
76-
F32BA0992389B2470075556C /* MultipeerHelper */,
76+
F3F3F8862401657900AC1EBF /* MultipeerHelper */,
7777
F32BA088238935140075556C /* Preview Content */,
7878
);
7979
path = "MultipeerHelper+Example";
@@ -87,16 +87,15 @@
8787
path = "Preview Content";
8888
sourceTree = "<group>";
8989
};
90-
F32BA0992389B2470075556C /* MultipeerHelper */ = {
90+
F3F3F8862401657900AC1EBF /* MultipeerHelper */ = {
9191
isa = PBXGroup;
9292
children = (
93-
F3B042F7239D49D700E18DED /* HasSynchronization+Extensions.swift */,
94-
F32BA09C2389B2760075556C /* MultipeerHelper.swift */,
95-
F32BA09D2389B2760075556C /* MultipeerHelperDelegate.swift */,
93+
F3F3F8882401658700AC1EBF /* HasSynchronization+Extensions.swift */,
94+
F3F3F8872401658700AC1EBF /* MultipeerHelper.swift */,
95+
F3F3F8892401658700AC1EBF /* MultipeerHelperDelegate.swift */,
9696
);
97-
name = MultipeerHelper;
98-
path = "MultipeerHelper+Example/MultipeerHelper";
99-
sourceTree = SOURCE_ROOT;
97+
path = MultipeerHelper;
98+
sourceTree = "<group>";
10099
};
101100
/* End PBXGroup section */
102101

@@ -176,12 +175,12 @@
176175
buildActionMask = 2147483647;
177176
files = (
178177
F32BA083238935120075556C /* ContentView.swift in Sources */,
178+
F3F3F88B2401658700AC1EBF /* HasSynchronization+Extensions.swift in Sources */,
179+
F3F3F88C2401658700AC1EBF /* MultipeerHelperDelegate.swift in Sources */,
179180
F32BA0A12389E6AB0075556C /* RealityViewController+Gestures.swift in Sources */,
180-
F32BA09F2389B2760075556C /* MultipeerHelperDelegate.swift in Sources */,
181181
F32BA0982389B1880075556C /* RealityViewController.swift in Sources */,
182-
F3B042F8239D49D700E18DED /* HasSynchronization+Extensions.swift in Sources */,
183182
F32BA081238935120075556C /* AppDelegate.swift in Sources */,
184-
F32BA09E2389B2760075556C /* MultipeerHelper.swift in Sources */,
183+
F3F3F88A2401658700AC1EBF /* MultipeerHelper.swift in Sources */,
185184
);
186185
runOnlyForDeploymentPostprocessing = 0;
187186
};

MultipeerHelper+Example/MultipeerHelper+Example/RealityViewController+Gestures.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ extension RealityViewController: UIGestureRecognizerDelegate {
2121
/// If you tap on an existing entity, it will run a scale up and down animation
2222
/// If you tap on the floor without hitting any entities it will create a new Anchor
2323
@objc func handleTap(_ sender: UITapGestureRecognizer? = nil) {
24-
guard let myData = "hello!".data(using: .ascii) else {
25-
return
24+
if let myData = "hello! from \(self.multipeerHelp.myPeerID.displayName)"
25+
.data(using: .unicode)
26+
{
27+
multipeerHelp.sendToAllPeers(myData, reliably: true)
2628
}
27-
multipeerHelp.sendToAllPeers(myData, reliably: true)
2829

2930
guard let touchInView = sender?.location(in: self.arView) else {
3031
return

MultipeerHelper+Example/MultipeerHelper+Example/RealityViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ extension RealityViewController: MultipeerHelperDelegate {
6565
}
6666

6767
func receivedData(_ data: Data, _ peer: MCPeerID) {
68-
print(String(data: data, encoding: .ascii) ?? "Data is not an ASCII string")
68+
print(String(data: data, encoding: .unicode) ?? "Data is not a unicode string")
6969
}
7070

7171
func peerJoined(_ peer: MCPeerID) {

Sources/MultipeerHelper/MultipeerHelper.swift

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ extension MultipeerHelper: MCNearbyServiceBrowserDelegate {
142142
withDiscoveryInfo _: [String: String]?
143143
) {
144144
// Ask the handler whether we should invite this peer or not
145-
let accepted = delegate?.peerDiscovered?(peerID) ?? false
146-
if delegate?.peerDiscovered == nil || accepted != false {
145+
if delegate?.shouldSendJoinRequest == nil || (delegate?.shouldSendJoinRequest?(peerID) ?? false) {
146+
print("BrowserDelegate \(peerID)")
147147
browser.invitePeer(peerID, to: session, withContext: nil, timeout: 10)
148148
}
149149
}
@@ -157,11 +157,12 @@ extension MultipeerHelper: MCNearbyServiceAdvertiserDelegate {
157157
/// - Tag: AcceptInvite
158158
public func advertiser(
159159
_: MCNearbyServiceAdvertiser,
160-
didReceiveInvitationFromPeer _: MCPeerID,
161-
withContext _: Data?,
160+
didReceiveInvitationFromPeer peerID: MCPeerID,
161+
withContext data: Data?,
162162
invitationHandler: @escaping (Bool, MCSession?) -> Void
163163
) {
164164
// Call the handler to accept the peer's invitation to join.
165-
invitationHandler(true, session)
165+
let shouldAccept = self.delegate?.shouldAcceptJoinRequest?(peerID: peerID, context: data)
166+
invitationHandler(shouldAccept != nil ? shouldAccept! : true, self.session)
166167
}
167168
}

Sources/MultipeerHelper/MultipeerHelperDelegate.swift

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,17 @@ import MultipeerConnectivity
2222
/// - Parameter peer: the `MCPeerID` of the peer that left
2323
@objc optional func peerLeft(_ peer: MCPeerID)
2424

25-
/// Callback for when a peer new peer has been found. will default to accept all peers
25+
/// Callback for when a new peer has been found. will default to accept all peers
2626
/// - Parameter peer: the `MCPeerID` of the peer who wants to join the network
27-
/// - Returns: Bool if the peer should be invited to the network or not
28-
@objc optional func peerDiscovered(_ peer: MCPeerID) -> Bool
27+
/// - Returns: Bool if the peer request to join the network or not
28+
@objc optional func shouldSendJoinRequest(_ peer: MCPeerID) -> Bool
29+
30+
/// Handle when a peer has requested to join the network
31+
/// - Parameters:
32+
/// - peerID: Peer requesting to join
33+
/// - context: Any data the requesting peer may have sent with their request
34+
/// - Returns: Bool if the peer's join request should be accepted
35+
@objc optional func shouldAcceptJoinRequest(peerID: MCPeerID, context: Data?) -> Bool
2936

3037
/// Peer can no longer be found on the network, and thus cannot receive data
3138
/// - Parameter peer: If a peer has left the network in a non typical way

0 commit comments

Comments
 (0)