스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
Nearby Interaction의 새로운 기능
Nearby Interaction 프레임워크를 통해 초광대역(UWB)을 앱 및 하드웨어 액세서리로 손쉽게 통합하는 방법을 살펴보세요. ARKit의 시공간적 기능과 U1 칩의 무선 감도를 결합하여 근처의 정지된 물체를 정밀하게 찾을 수 있는 방법을 배울 수 있습니다. 또한 Bluetooth로 페어링된 UWB 액세서리를 사용하여 백그라운드 상호 작용을 만드는 방법을 보여드립니다.
리소스
관련 비디오
WWDC21
WWDC20
-
다운로드
♪ 잔잔한 힙합 연주 음악 ♪ ♪ 안녕하세요, 전 Jon Schoenberg고 Apple의 Location Technologies 팀의 엔지니어입니다 이번 세션에서는 Nearby Interaction에 우리가 도입한 새 기능들을 다룰 텐데요 그것들은 여러분이 공간 인식에 더욱 풍부하고 다양한 체험을 구축할 수 있게 해줄 겁니다 Nearby Interaction 프레임워크는 U1의 능력을 활용하는 걸 간단하게 해줍니다 U1은 Ultra Wideband 기술이 들어간 Apple의 칩이죠 그리고 인근 Apple 기기나 액세서리 사이의 정확하고 공간을 인식하는 상호 작용을 가능하게 합니다 Ultra Wideband를 위한 Apple의 U1 chip과 호환되는 것들이죠 지난 2년 동안 여러분이 이용할 수 있었던 걸 잠시 살펴보며 시작해봅시다 Nearby Interaction이 WWDC 2020에서 소개됐을 때 그 기능은 U1으로 두 아이폰 사이에서의 세션을 만들어서 운영하는 일에 집중했습니다 WWDC 2021에선 기능이 확장되어 Apple Watch 및 Ultra Wideband와 호환되는 액세서리와의 세션 운영을 지원했습니다 Nearby Interaction 프레임워크의 API를 자세히 알아보는 데 관심이 있는 분은 2020년 WWDC 발표인 'Meet Nearby Interaction'을 검토해보세요 2021년 'Explore Nearby Interaction with third-party' 'accessories'도요 우린 Nearby Interaction에 대한 커뮤니티의 반응에 깜짝 놀랐고, 이번 세션에선 새로운 기능들과 개선 사항들을 공개하게 되어 기쁩니다 저는 두 가지 주제에 집중하겠습니다 ARKit로 Nearby Interaction 강화하기와 배경 세션들입니다 도중에 저는 Nearby Interaction 프레임워크를 사용하기 쉽게 해주는 몇 가지 개선 사항을 알려드리고 작년에 발표된 제3자 하드웨어 지원에 대한 업데이트로 마무리하겠습니다 새 기능들로 여러분이 할 것에 대한 우리의 기대가 크니 자세한 내용으로 바로 들어가보죠 먼저 ARKit를 Nearby Interaction과 긴밀하게 통합해주는 흥미진진한 새 기능입니다 이 새 기능은 ARKit에서 계산된 기기 궤적을 활용하는 방식으로 Nearby Interaction을 강화합니다 ARKit로 향상된 Nearby Interaction은 AirTag가 있는 Precision Finding에 동력이 되는 것과 동일한 근본 기술을 활용하고 Nearby Interaction을 통해 그걸 여러분이 이용 가능하게 합니다 최고의 이용 사례는 사용자를 특정한 인근 물체로 안내해주는 체험들입니다 그 물체는 가령 분실된 물건이나 관심 대상이나 사용자가 상호 작용하길 원하는 대상입니다 ARKit와 Nearby Interaction을 통합하는 방식으로 거리와 방향 정보가 Nearby Interaction 하나만 사용할 때보다 더욱 일관되게 이용 가능해서 Ultra Wideband 시야를 효과적으로 넓혀줍니다 마지막으로 이 기능은 고정된 기기들과 상호 작용할 때의 사용이 가장 좋습니다 그럼 바로 시연으로 들어가보죠 ARKit와 Nearby Interaction의 새로운 통합이 여러분의 애플리케이션에서 허용하는 가능성의 시연입니다 여기엔 제 Jetpack Museum을 위한 애플리케이션이 하나 있는데요 거기엔 Ultra Wideband 액세서리가 있어서 사용자들에게 전시물 안내를 도와줍니다 다음 제트팩을 가서 찾아보죠 사용자가 다음 전시물로 가는 걸 선택할 때 애플리케이션은 Ultra Wideband 액세서리를 발견하고 필요한 교환을 수행해서 Nearby Interaction을 사용하기 시작합니다 그런 다음 애플리케이션은 사용자에게 휴대폰을 좌우로 움직이라고 지시하면서 다음 전시물의 물리적 위치를 판단하기 시작합니다 향상된 Nearby Interaction 모드를 ARKit로 사용해서요 이제 애플리케이션이 다음 전시물로 가는 방향을 알았으니 그걸 확인하기 위해 가야 할 방향을 알려주는 간단한 화살표 아이콘이 나옵니다 ARKit와 Nearby Interaction의 조합을 활용하는 이렇게 풍부하고 공간 인식성이 있는 정보는 전시물이 사용자 뒤에 있을 때와 사용자가 전시물로부터 멀어지는 방향으로 가고 있을 때도 표시해줄 수 있습니다 마지막으로 이 애플리케이션은 AR 세계에 다음 전시물 위치의 오버레이를 표시할 수 있습니다 그리고 애플리케이션은 사용자가 iPhone을 위아래로 살짝 움직이라고 지시해서 AR 세계에서 그 전시물이 있는 곳을 알려줍니다 일단 AR 콘텐츠가 장면 내에 놓이면 Ultra Wideband 측정치가 있는 Nearby Interaction과 ARKit의 강력한 조합은 사용자가 쉽게 발길을 옮겨 다음 제트팩을 확인하게 해줍니다 저는 제트팩을 찾진 못했지만 여왕은 찾았습니다 이제 이 향상된 Nearby Interaction 모드를 여러분이 활성화할 수 있는 방법을 알아보죠 iOS 15로 여러분의 애플리케이션엔 인근 피어로부터 NIDiscoveryToken을 받아들이고 세션 설정을 만들어주고 NISession을 돌아가게 하는 기법이 있을 겁니다 Nearby Interaction의 기존 및 신규 사용에서 ARKit로 확장 모드를 작동시키는 건 쉽습니다 NIConfiguration 서브클래스의 isCameraAssistanceEnabled 속성으로요 isCameraAssistanceEnabled 속성을 설정하는 게 ARKit로 확장 모드를 활용하기 위해 필요한 전부입니다 카메라 지원이 이용 가능할 때는 두 개의 Apple 기기와 제3자 Ultra Wideband 액세서리로 가는 Apple 기기가 상호 작용할 때입니다 카메라 지원이 활성화된 상태에서 NISession을 돌리면 어떻게 되는지 자세히 살퍼보죠 카메라 지원이 활성화되면 ARSession이 Nearby Interaction 프레임워크 내에 자동으로 생성됩니다 이 ARSession 생성은 여러분의 책임이 아닙니다 카메라 지원이 가능한 상태에서 NISession을 돌리는 건 Nearby Interaction 프레임워크 내에서 자동으로 생성된 ARSession도 돌아가게 할 겁니다 ARSession은 애플리케이션 프로세스 내에서 돌아가고 있습니다 그 결과 애플리케이션은 그것의 Info.plist 내에서 카메라 사용량 설명 키를 제공해야 합니다 이걸 꼭 유용한 문자열로 삼아서 좋은 체험을 제공하는 데 카메라가 필요한 이유를 사용자들에게 전달하세요 애플리케이션 하나에 ARSession도 하나만 돌아갈 수 있습니다 이는 여러분의 앱에 ARKit 체험이 이미 있다면 여러분이 NISession으로 만드는 ARSession을 공유해야 한다는 뜻입니다 NISession으로 ARSession을 공유하기 위해 새로운 setARSession 기법이 NISession 클래스에서 이용 가능합니다 NISession에서의 작동 이전에 setARSession이 호출되면 세션이 진행될 때 ARSession은 Nearby Interaction 프레임워크 내에서 자동으로 생성되지 않습니다 이것이 애플리케이션에 보장하는 건 ARKit 체험이 Nearby Interaction의 카메라 지원과 동시에 일어나게 하는 겁니다 이 SwiftUI 사례에선 makeUIView 기능의 일부로 ARView 내에 깔려 있는 ARSession이 새로운 setARSession 기법을 통해 NISession과 공유됩니다 여러분이 ARSession을 직접 사용하고 있다면 ARSession에 run을 호출할 필요가 있습니다 ARWorldTracking Configuration으로요 덧붙여서 이 ARConfiguration 내에선 몇 가지 속성이 특정한 방식으로 설정되어야 카메라 지원의 고품질 성능을 보장할 수 있습니다 worldAlignment는 .gravity로 설정되고 Collaboration과 userFaceTracking은 비활성화로 initialWorldMap은 nil로 그리고 대표의 sessionShouldAttempt Relocalization 기법은 false를 돌려줘야 합니다 여러분이 만든 ARSession을 공유할 때의 모범 사례를 살펴보겠습니다 NISessionDelegate didInvalidateWith 오류 기법에선 오류 코드를 늘 점검하세요 공유된 ARSession을 돌리는 데 사용되는 ARConfiguration이 약술된 속성을 따르지 않으면 NISession은 무효가 될 겁니다 새로운 NIError 코드인 invalidARConfiguration를 돌려받을 겁니다 여러분 앱의 인근 물체 업데이트를 받으려면 NISessionDelegate에 있는 didUpdateNearbyObjects 기법을 계속 사용하세요 didUpdateNearbyObjects 기법 내에서 여러분은 원하는 피어의 인근 물체를 확인하고 NINearbyObject가 있을 때 그것의 거리 및 방향 속성을 바탕으로 UI를 업데이트할 겁니다 이것들이 nil이 될 수 있다는 점을 늘 유의하여 떠올리면서요 카메라 지원이 활성화되면 NINearbyObject 내의 신규 속성 두 가지를 이용할 수 있습니다 첫째는 horizontalAngle입니다 이건 라디안 단위의 1D 각도로 인근 물체에 대한 방위각 방향을 나타냅니다 이용할 수 없을 때 이 값은 nil이 됩니다 둘째로 verticalDirectionEstimate은 수직 차원에서 인근 물체에 대한 위치 관계입니다 이건 새로운 VerticalDirection Estimate 타입입니다 거리와 방향은 사용자의 기기와 인근 물체 사이의 핵심적인 공간 관계를 나타냅니다 거리는 미터로 측정되고 방향은 여러분의 기기에서 인근 물체로의 3D 벡터입니다 수평각은 NISession을 돌리는 기기와 인근 물체 사이의 각도로 정의됩니다 로컬 수평면 내에서요 이는 그 두 기기와 기기 자체의 수평 회전 사이의 모든 수직 변위 오프셋을 설명해줍니다 방향은 3D지만 수평각은 두 기기 사이의 방향을 1D로 표현한 겁니다 이 수평각 속성은 방향 속성과 상호 보완적이고 그 방향을 알지 못한다면 수평각이 있어서 여러분의 사용자를 인근 물체로 안내하는 데 도움을 받을 겁니다 수직 방향 추정치는 수직 위치 정보의 질적 평가입니다 여러분은 그걸 써서 층 사이에서 사용자들을 안내해야 합니다 새 VerticalDirectionEstimate 타입을 살펴보죠 VerticalDirectionEstimate는 NINearbyObject 내의 중첩 이넘이고 인근 물체에 대한 수직 관계의 질적 평가를 나타냅니다 그 속성을 쓰기 전에 VerticalDirectionEstimate가 알려지지 않았는지 반드시 확인하세요 수직 관계는 동일하거나 높거나 낮거나 특별한 aboveOrBelow 값이 될 수 있는데 그건 인근 물체가 같은 레벨에 있지 않으면서 확실히 기기의 위나 아래에 있지도 않다는 걸 나타냅니다 Ultra Wideband 측정치는 시야와 장애물들의 영향을 받습니다 방향 정보에 대한 시야는 기기의 후면에서 투사하는 원뿔에 대응합니다 카메라 지원이 활성화됐을 때 ARKit에서 계산된 기기 궤적은 거리, 방향 수평각, 수직 방향 추정치를 더 많은 상황에서 이용을 가능하게 해서 Ultra Wideband 센서 시야를 효과적으로 확대합니다 이제 이 ARKit와 Nearby Interaction의 통합을 활용해서 AR 객체들을 여러분 장면에 놓는 걸 알아보죠 인근 물체를 나타내는 3D 가상 콘텐츠를 카메라 피드 시각화에 덮어씌우는 걸 쉽게 하기 위해 우린 조력자 기법을 추가했습니다 NISession의 worldTransform입니다 이 기법은 ARKit의 좌표 공간에 worldTransform을 돌려주는데 그 공간은 이용 가능할 때 물리적 환경 속에 있는 인근 물체의 주어진 위치를 나타냅니다 이용이 불가능하면 이 기법은 nil을 돌려줍니다 우린 시연에서 이 기법을 써서 다음 전시물 위에 떠다니는 구를 놓았습니다 우린 여러분이 Nearby Interaction 위치 출력을 활용해서 여러분 앱의 AR 세계에서의 콘텐츠 조정을 가능한 한 쉽게 만들고 싶습니다 iOS의 두 가지 강력한 시스템이 결합되었습니다 여러분의 사용자는 수직과 수평 방향으로 기기를 충분히 쓸어서 카메라 지원이 세계 변환을 적절하게 계산할 수 있게 해야 합니다 이 기법은 사용자 동작이 부족해서 카메라 지원이 ARKit 세계 변환으로 완전히 수렴하지 못하면 nil을 돌려줄 수 있습니다 이 변환이 여러분의 앱 체험에 중요할 때는 사용자가 조치를 취해 이 변환을 생성하라고 코칭하는 게 중요합니다 이제 우리가 NISessionDelegate에 추가한 것들을 살펴봅시다 여러분이 시연에서 봤던 것과 비슷하게 사용자를 유도하는 걸 가능하게 했던 것들이죠 사용자를 물체로 안내하는 데 도움을 주기 위해 NISessionDelegate 회신이 Nearby Interaction 알고리즘 수렴에 관한 정보를 제공합니다 새로운 didUpdate AlgorithmConvergence 대표 기법을 통해서요 알고리즘 수렴은 수평각, 수직 방향 추정치 worldTransform이 이용 불가능한 이유를 알 수 있게 하고 그런 속성들을 해결하기 위해 사용자가 취할 수 있는 조치도 알려줍니다 그 대표가 제공하는 건 새로운 NIAlgorithmConvergence 객체와 선택형인 NINearbyObject입니다 이 대표 기법은 NIConfiguration에서 카메라 지원을 활성화했을 때만 호출됩니다 새로운 NIAlgorithm Convergence 타입을 살펴봅시다 NIAlgorithmConvergence에는 단일 상태 속성이 있는데 그건 NIAlgorithm ConvergenceStatus 타입입니다 NIAlgorithmConvergenceStatus 타입은 이넘으로 알고리즘이 수렴되는지의 여부를 나타냅니다 알고리즘이 수렴되지 않으면 관련 값의 배열인 NIAlgorithmConvergenceStatus .Reasons가 제공됩니다 그럼 새로운 대표 기법으로 돌아와서 사용자에 대한 카메라 지원 상태를 여러분이 업데이트하고 싶다고 가정합시다 여러분은 수렴 상태를 켜고 알려지지 않았거나 수렴되었다면 그 정보를 사용자에게 표시할 수 있습니다 NINearbyObject를 반드시 점검하세요 그 객체가 nil이면 NIAlgorithmConvergence 상태는 세션 그 자체에 적용됩니다 특정한 NINearbyObject가 아니고요 상태가 notConverged일 때는 거기에는 알고리즘이 수렴되지 않은 이유를 설명하는 관련 값이 포함됩니다 이런 이유로 로컬화된 설명이 있어서 여러분이 사용자들과 소통을 더 잘 하게 해줍니다 다음으로는 이 값들을 사용하는 방법을 살펴보죠 notConverged 케이스와 관련된 이유 값을 더 면밀히 점검하면 사용자가 인근의 물체와 관련해서 원하는 정보를 생산하는 데 도움이 되는 조치를 취하도록 안내하는 게 가능합니다 관련된 값은 NIAlgorithmConvergence StatusReasons의 배열입니다 그 이유가 나타낼 수 있는 건 전 동작의 부족과 수평 및 수직 휩쓸기 동작의 부족과 부족한 조명입니다 염두에 둘 건 여러 가지 이유가 동시에 존재할 수 있고 여러분의 애플리케이션에 가장 중요한 걸 바탕으로 각각의 동작을 통해 사용자를 순차적으로 안내하란 겁니다 제가 시연에서 휴대폰을 움직였던 걸 떠올려보세요 수평, 수직 방향 모두로 휩쓸어야 세계 변환을 해결할 수 있었던 것도요 그게 가장 중요한 내용이었습니다 카메라 지원이 있는 향상된 Nearby Interaction 모드에서요 우린 몇 가지를 추가로 바꿔서 여러분이 이 모드를 더 잘 활용할 수 있게 했습니다 이전에는 주어진 기기에서 Nearby Interaction이 지원되는지 확인하는 데 필요한 건 NISession의 isSupported 클래스 변수뿐이었습니다 그건 이제 사라지게 됩니다 카메라 지원의 추가로 우린 Nearby Interaction에 지원받는 기기 능력들을 보다 서술적으로 만들었습니다 새로운 NIDeviceCapability 객체를 돌려주는 NISession의 새로운 deviceCapabilities 클래스 멤버로요 최소한 supportsPrecise DistanceMeasurement 속성을 확인하는 건 이제 사라지게 될 isSupported 클래스 변수 확인과 동일한 겁니다 일단 기기가 정확한 거리 측정치를 지원한다는 점을 여러분이 밝혔으면 NIDeviceCapability를 사용해야 여러분의 애플리케이션을 돌리는 기기의 Nearby Interaction에서 이용 가능한 기능들을 온전히 알 수 있습니다 여러분의 앱 체험을 기기의 기능들에 맞추는 걸 추천합니다 NIDeviceCapability 객체의 추가된 supportsDirectionMeasurement와 supportsCameraAssistance 속성들을 확인해서요 모든 기기가 방향 측정치와 카메라 지원을 지원하는 건 아니므로 이 기기의 능력에 맞춰져 있는 체험들을 반드시 포함시키세요 특히 거리 전용 체험들을 포함시키는 일에 유념하세요 Apple Watch를 최고로 지원하기 위해서요 여기까지 ARKit로 Nearby Interaction을 개선할 방법으로서 카메라 지원에 관한 전부였습니다 이제 액세서리 배경 세션으로 주의를 돌려보죠 요즘 여러분의 앱에선 Nearby Interaction을 사용하여 사용자들이 다른 기기를 가리키고 친구를 찾고 다른 UI의 컨트롤을 보여주게 해줍니다 액세서리로의 거리와 방향을 바탕으로요 그런데 여러분의 앱이 배경으로 전환해 가거나 사용자가 iOS와 watchOS의 화면을 잠그면 돌아가고 있는 모든 NISession은 애플리케이션이 전경으로 돌아올 때까지 중단됩니다 이는 여러분이 액세서리와 상호 작용할 때 실천적인 사용자 체험에 집중해야 한다는 뜻입니다 iOS 16을 기점으로 Nearby Interaction은 핸즈프리입니다 여러분은 이제 Nearby Interaction을 사용해서 방으로 걸어 들어갈 때 스마트 스피커로 음악을 재생하거나 전기 자전거에 탈 때 그걸 켜거나 다른 핸즈프리 동작을 액세서리에서 작동시킬 수 있죠 여러분은 이렇게 할 수 있습니다 사용자가 액세서리 배경 세션을 통해 앱을 활발하게 사용하지 않더라도요 이 흥미진진한 새 기능을 사용하는 방법을 살펴보죠 액세서리로 NISession을 설정하고 돌리는 것에 관한 순서를 잠시 복습해보겠습니다 작년 WWDC 프레젠테이션에서의 이 순서를 여러분은 알아보실 수도 있습니다 액세서리는 그 Ultra Wideband 액세서리 설정 데이터를 데이터 채널을 통해 여러분의 애플리케이션으로 보내고 여러분은 이 데이터로 NINearbyAccessory Configuration을 만듭니다 여러분은 NISession을 만들고 NISessionDelegate를 정해서 액세서리에서 Ultra Wideband 측정치를 얻습니다 여러분은 자신의 설정으로 NISession을 돌리고 세션은 공유 가능한 설정 데이터를 돌려줘서 액세서리를 구성해서 여러분의 애플리케이션과 상호 운용되게 합니다 이 공유 가능한 설정 데이터를 액세서리로 돌려 보낸 후 여러분은 이제 Ultra Wideband 측정치를 여러분의 애플리케이션과 액세서리에서 받을 수 있습니다 제3자 액세서리로 Nearby Interaction을 설정하고 돌리는 것에 관한 자세한 내용을 알고 싶으면 작년 WWDC 세션을 검토해주시기 바랍니다 이제 새로운 배경 세션을 구성하는 방법을 살펴보죠 이전 순서도에선 애플리케이션과 액세서리 사이에서의 데이터 흐름을 볼 수 있었습니다 액세서리와 애플리케이션 사이의 전달 채널이 Bluetooth LE를 사용하게 하는 건 아주 흔합니다 Bluetooth LE를 사용해서 액세서리와 페어링을 하면 Nearby Interaction을 활성화해서 배경에서 세션을 시작하고 이어가게 할 수 있습니다 이게 어떻게 가능한지 면밀하게 살펴보죠 요즘은 여러분의 앱을 설정해서 Core Bluetooth를 사용하여 Bluetooth LE 액세서리로 데이터를 발견하고 그것에 연결하고 그걸 교환할 수 있습니다 여러분의 앱이 배경에 있는 동안에요 기존의 Core Bluetooth Programming Guide나 2017년 WWDC 세션을 확인해서 자세히 알아보세요 CoreBluetooth의 강력한 배경 작동을 활용해서 액세서리를 효율적으로 발견하고 배경에서 여러분의 애플리케이션을 돌릴 때 그 애플리케이션은 Bluetooth LE 액세서리로 NISession을 시작할 수 있는데 그 액세서리는 배경에서 Ultra Wideband도 지원합니다 이제 이 새로운 모드를 반영해서 순서도가 업데이트되는 방식을 살펴봅시다 이 액세서리와 상호 작용을 하기 위해 먼저 그게 Bluetooth LE와 페어링이 되게 하세요 그런 다음 액세서리에 접속합니다 액세서리가 그것의 액세서리 Ultra Wideband 설정 데이터를 생성하면 그건 그걸 애플리케이션으로 전송하고 Nearby Interaction GATT 서비스를 차지해야 합니다 이에 관한 건 다음에 설명하죠 마지막으로 애플리케이션이 액세서리의 설정 데이터를 받으면 새 이니셜라이저를 사용해서 NINearbyAccessoryConfiguration 오브젝트를 구축하세요 여러분 액세서리의 UWB 설정 데이터와 그 Bluetooth 피어 식별자에 공급을 수행하게요 이 설정으로 NISession을 돌리고 구성을 반드시 완료하세요 NISessionDelegate에서 공유 가능한 설정을 받아서요 그리고 공유 가능한 설정을 액세서리에 보내세요 액세서리가 Bluetooth 식별자와 Ultra Wideband 설정 사이의 관계를 형성하기 위해서는 그건 새로운 Nearby Interaction GATT 서비스를 수행해야 합니다 Nearby Interaction 서비스에는 암호화된 특성 하나가 들어 있는데 그걸 Accessory Configuration Data라고 합니다 거기에는 NINearbyAccessory Configuration 객체를 초기화하는 데 사용되는 동일한 UWB 설정 데이터가 들어 있습니다 iOS는 이 특성을 사용해서 여러분의 Bluetooth 피어 식별자와 NISession 사이의 연관성을 확인해줍니다 여러분의 앱은 이 특성에서 직접 읽을 수 없습니다 이 새로운 Nearby Interaction GATT 서비스에 관한 자세한 내용은 developer.apple.com/ nearby-interaction에 있습니다 여러분의 액세서리가 여러 NISession을 동시에 지원하면 Accessory Configuration Data의 인스턴스를 여러 개 만드세요 각각의 NISession UWB 설정은 다르게요 그게 액세서리에 필요한 겁니다 여러분의 애플리케이션에서 실행해야 할 것으로 넘어가보죠 코드로 깊이 들어가서요 액세서리 배경 세션은 액세서리가 사용자 iPhone에 LE 페어링이 되어 있는 걸 요구합니다 여러분의 앱이 이 과정을 촉발하는 작업을 담당합니다 이걸 하려면 여러분의 액세서리를 스캔하고 그것에 연결하고, 그 서비스와 특성을 발견할 기법을 실행하세요 그런 다음 여러분 액세서리의 암호화된 특성 중 하나를 읽을 기법을 실행하세요 이건 한 번만 하면 됩니다 그건 페어링을 받아들이란 프롬프트를 사용자에게 보여줍니다 액세서리 배경 세션에는 여러분 액세서리로의 Bluetooth 연결도 필요합니다 여러분의 앱은 배경에 있을 때도 이 연계를 형성할 수 있어야 합니다 이렇게 하려면 액세서리로의 연결 시도를 개시하는 기법을 실행하세요 액세서리가 Bluetooth 범위 밖에 있더라도 여러분은 이렇게 해야 합니다 그런 다음 CBManagerDelegate 기법을 실행해서 여러분의 앱이 Core Bluetooth로 다시 실행된 후 상태를 회복시키고 연결이 설정됐을 때 처리하세요 이제 여러분은 액세서리 배경 세션을 돌릴 준비가 됐습니다 NINearbyAccessoryConfiguration 객체를 반드세요 CBPeripheral 식별자로부터 액세서리의 UWB 설정 데이터와 그 Bluetooth 피어 식별자를 제공하는 방식으로요 그 설정으로 NISession을 돌리면 여러분의 앱이 배경에 있는 동안 그게 돌아갈 겁니다 그게 다예요 Xcode에서 여러분의 앱을 위해 업데이트해야 할 설정이 하나 더 있긴 합니다 이 배경 모드에 필요한 건 여러분 앱의 Info.plist에 있는 UIBackgroundModes 배열에 Nearby Interaction 문자열입니다 Xcode 기능 편집기를 이용해서 이 배경 모드를 추가할 수도 있습니다 'Uses Bluetooth LE accessories'도 활성화해야 합니다, 여러분의 앱이 배경에 있는 액세서리에 연결할 수 있게요 이 새로운 액세서리 배경 세션에 관한 한 가지 주의 사항입니다 여러분의 애플리케이션이 배경에 있을 때 NISession은 계속 돌아가고 중단되지 않습니다 따라서 Ultra Wideband 측정치는 액세서리에서 이용 가능합니다 여러분은 액세서리에 있는 Ultra Wideband measurements를 소모하고 활용해야 합니다 여러분의 애플리케이션은 런타임을 받지 않을 거고 여러분은 didUpdateNearbyObject 대표 회신을 받지 않을 겁니다 여러분의 애플리케이션이 전경으로 돌아올 때까지는요 이 새로운 배경 모드를 사용할 때 다음의 모범 사례를 복습해보죠 여러분의 액세서리로 LE 페어링을 작동시키면 사용자에게 페어링을 수용하라는 프롬프트가 나옵니다 이렇게 해야 할 때는 액세서리 페어링을 하려는 이유를 사용자가 직관적으로 알 때입니다 이는 구성 흐름 내에 있어서 그게 액세서리와의 관계를 형성하거나 사용자가 그 액세서리와 상호 작용하고 싶은 욕구를 명확하게 나타낼 때입니다 여러분의 앱이 배경에 있는 동안 NISession은 중단되지 않지만 didUpdateNearbyObject 대표 회신을 받지 않을 겁니다 그런데 여러분의 액세서리는 Ultra Wideband 측정치는 받을 겁니다 이 측정치들을 엑세서리에서 직접 처리해서 사용자에게 어떤 동작이 일어나야 할지 판단하세요 마지막으로 배터리 사용량을 관리하세요 중대한 사용자 상호 작용 중에 여러분의 액세서리에서 앱으로 데이터를 보내서요 예를 들어 사용자에게 공지를 보여주기 위해서요 여기까지 배경 세션에 관해 여러분이 알아야 할 전부였고 이제 제3자 하드웨어 지원이란 마지막 주제로 가보겠습니다 오늘 제가 발표하게 되어 기쁜 건 이전에 이용 가능했던 베타 U1 호환 가능 개발 키트에서 베타가 종료되어 폭넓은 사용이 가능해졌단 겁니다 developer.apple.com /nearby-interaction에 방문해서 호환 가능한 Ultra Wideband 개발 키트를 자세히 알아보세요 우린 또한 액세서리 제조업체들의 사양을 업데이트해서 새로운 액세서리 배경 세션을 지원합니다 Nearby Interaction GATT 서비스도 포함해서요 그건 동일한 웹 사이트에서 이용 가능합니다 그럼 이번 세션에서 설명한 걸 요약해보죠 Nearby Interaction에는 이제 카메라 지원 모드가 새로 생겼고 그건 ARKit와 Nearby Interaction을 긴밀하게 통합해서 매끄러운 체험을 제공하여 여러분이 공간을 인식하는 체험을 만들게 해주고 그건 사용자들을 인근 물체로 안내해줍니다 이 액세서리 배경 세션들은 여러분이 배경에서 세션을 개시하고 확장할 수 있게 해서 사용자들을 위한 더욱 실천적인 체험을 구축하게 해줍니다 제3자 호환 가능 Ultra Wideband 하드웨어 지원에 대한 흥미로운 업데이트를 발표했습니다 올해의 Nearby Interaction 업데이트는 여기까지입니다 데모를 다운받고 업데이트된 기능에 관한 피드백을 갖고 연락하고 업데이트된 제3자 사양을 검토하고 공간 체험이 있는 멋진 앱을 구축해보세요 감사합니다 ♪
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.