โฆษณาและ Discover

ตั้งค่า Connection Manager

เครื่องมือจัดการการเชื่อมต่อจะจัดการเหตุการณ์การเชื่อมต่อทั้งหมด และเป็นอินเทอร์เฟซสำหรับ การโอนข้อมูลระหว่างอุปกรณ์ ข้อกำหนดสำหรับโฆษณา และการค้นพบ

ก่อนอื่น คุณควรเลือกรหัสบริการเพื่อระบุแอปโดยไม่ซ้ำกัน ขอแสดงความนับถือ ให้ใช้ชื่อแพ็กเกจของแอป (เช่น com.example.app)

จากนั้นให้เลือกกลยุทธ์สำหรับกรณีการใช้งานของคุณ กลยุทธ์ที่คุณเลือกจะเป็นตัวกำหนดโทโพโลยีการเชื่อมต่อสำหรับแอปของคุณ (.cluster .star .pointToPoint)

เริ่มต้นเครื่องมือจัดการการเชื่อมต่อและใช้เมธอดการมอบสิทธิ์

Swift

import NearbyConnections

class Example {
  let connectionManager: ConnectionManager

  init() {
    connectionManager = ConnectionManager(serviceID: "com.example.app", strategy: .cluster)
    connectionManager.delegate = self
  }
}

extension Example: ConnectionManagerDelegate {
  func connectionManager(
    _ connectionManager: ConnectionManager, didReceive verificationCode: String,
    from endpointID: EndpointID, verificationHandler: @escaping (Bool) -> Void) {
    // Optionally show the user the verification code. Your app should call this handler
    // with a value of `true` if the nearby endpoint should be trusted, or `false`
    // otherwise.
    verificationHandler(true)
  }

  func connectionManager(
    _ connectionManager: ConnectionManager, didReceive data: Data,
    withID payloadID: PayloadID, from endpointID: EndpointID) {
    // A simple byte payload has been received. This will always include the full data.
  }

  func connectionManager(
    _ connectionManager: ConnectionManager, didReceive stream: InputStream,
    withID payloadID: PayloadID, from endpointID: EndpointID,
    cancellationToken token: CancellationToken) {
    // We have received a readable stream.
  }

  func connectionManager(
    _ connectionManager: ConnectionManager,
    didStartReceivingResourceWithID payloadID: PayloadID,
    from endpointID: EndpointID, at localURL: URL,
    withName name: String, cancellationToken token: CancellationToken) {
    // We have started receiving a file. We will receive a separate transfer update
    // event when complete.
  }

  func connectionManager(
    _ connectionManager: ConnectionManager,
    didReceiveTransferUpdate update: TransferUpdate,
    from endpointID: EndpointID, forPayload payloadID: PayloadID) {
    // A success, failure, cancelation or progress update.
  }

  func connectionManager(
    _ connectionManager: ConnectionManager, didChangeTo state: ConnectionState,
    for endpointID: EndpointID) {
    switch state {
    case .connecting:
      // A connection to the remote endpoint is currently being established.
    case .connected:
      // We're connected! Can now start sending and receiving data.
    case .disconnected:
      // We've been disconnected from this endpoint. No more data can be sent or received.
    case .rejected:
      // The connection was rejected by one or both sides.
    }
  }
}

เริ่มโฆษณา

หากต้องการเริ่มโฆษณา ให้เริ่มต้นผู้ลงโฆษณา และใช้วิธีการมอบสิทธิ์ และโทรหา startAdvertising(using:)

Swift

import NearbyConnections

class Example {
  let connectionManager: ConnectionManager
  let advertiser: Advertiser

  init() {
    connectionManager = ConnectionManager(serviceID: "com.example.app", strategy: .cluster)
    connectionManager.delegate = self

    advertiser = Advertiser(connectionManager: connectionManager)
    advertiser.delegate = self

    // The endpoint info can be used to provide arbitrary information to the
    // discovering device (e.g. device name or type).
    advertiser.startAdvertising(using: "My Device".data(using: .utf8)!)
  }
}

extension Example: AdvertiserDelegate {
  func advertiser(
    _ advertiser: Advertiser, didReceiveConnectionRequestFrom endpointID: EndpointID,
    with context: Data, connectionRequestHandler: @escaping (Bool) -> Void) {
    // Accept or reject any incoming connection requests. The connection will still need to
    // be verified in the connection manager delegate.
    connectionRequestHandler(true)
  }
}

เริ่มต้น Discovery

ในการเริ่มค้นหา ให้เริ่มต้นเครื่องมือค้นพบ และใช้วิธีการมอบสิทธิ์ และโทรหา startDiscovery()

Swift

import NearbyConnections

class Example {
  let connectionManager: ConnectionManager
  let discoverer: Discoverer

  init() {
    connectionManager = ConnectionManager(serviceID: "com.example.app", strategy: .cluster)
    connectionManager.delegate = self

    discoverer = Discoverer(connectionManager: connectionManager)
    discoverer.delegate = self

    discoverer.startDiscovery()
  }
}

extension Example: DiscovererDelegate {
  func discoverer(
    _ discoverer: Discoverer, didFind endpointID: EndpointID, with context: Data) {
    // An endpoint was found.
  }

  func discoverer(_ discoverer: Discoverer, didLose endpointID: EndpointID) {
    // A previously discovered endpoint has gone away.
  }
}