관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 1. WWDC2023 정리 - SharePlay 기능 (GroupActivities, Add SharePlay to your app) 본문

WWDC 정리/WWDC 2023 정리

[iOS - swift] 1. WWDC2023 정리 - SharePlay 기능 (GroupActivities, Add SharePlay to your app)

jake-kim 2023. 6. 7. 01:11

SharePlay란?

https://www.apple.com/kr/newsroom/2021/11/shareplay-powers-new-ways-to-stay-connected-and-share-experiences-in-facetime/

  • 하나의 "그룹"을 만들고 실시간으로 무엇을 하고 어떤 활동을 하고 있는지 공유를 하는 것 (FaceTime, EMssage, AirDrop으로 공유 가능)
  • iOS 17부터 AirDrop을 통해 SharePlay제공이 가능 (장치를 하나로 묶으면 SharePlay가 시작)
  • 공유할 사용자 이름이나 이메일이 필요 없이 에어드롭만 있으면 손쉽게 가능
  • Group Activities에서 end-to-end 암호화 채널을 제공하여 Apple은 SharePlay를 통해 전송된 앱 데이터를 볼 수 없음
  • SharePlay를 사용할 수 있게하는 GroupActivities를 통해 어떤 앱이든지 그룹을 활동에 통합하고 활동에 참여한 참가자 간에 신속한 데이터 전송이 가능
  • SharePlay의 장점 중 하나는 앱이 이미 존재하는 그룹을 활용할 수 있음

* SharePlay는 iOS, iPadOS, macOS, tvOS에서 모두 사용 가능

SharePlay 사용 방법

  • import GroupActivies
import GroupActivities
  • struct형태에 GroupActivity 프로토콜을 준수하여 액티비티의 기능을 따르게 정의

참고) GroupActivity 프로토콜

@available(iOS 15, macOS 12, tvOS 15, *)
@available(watchOS, unavailable)
public protocol GroupActivity : Decodable, Encodable {
    static var activityIdentifier: String { get }
    var metadata: GroupActivityMetadata { get async }
}
  • GroupActivity를 따르게 정의
import UIKit
import GroupActivities

struct OrderTogether: GroupActivity {
    // 액티비티 id
    static let activityIdentifier = "com.jake.ios.development"
    
    let truckName: String
    
    var metadata: GroupActivityMetadata {
        var metadata = GroupActivityMetadata()
        metadata.title = "Order Tacos Together"
        metadata.subtitle = truckName
        metadata.previewImage = UIImage(named: "ActivityImage")?.cgImage
        metadata.type = GroupActivityMetadata.ActivityType.listenTogether
        return metadata
    }
}
  • metadata는 AirDrop으로 그룹을 요청하면 아래와 같이 상대방에게 title, subtitle, image, type정보를 가지는 푸시 노티 형태로 전송됨

metadata의 정보를 토대로 그룹에게 title, subtitle, image, type 정보를 푸시 노티 형태로 전송

  • metadata 적용 시 주의사항
    • 메타데이터의 title은 앱 이름이 아니라 그룹이 시작한 활동 이름을 명시해야함
    • subtitle에는 활동에 대한 더 자세한 정보를 제공
    • previewImage는 앱의 아이콘이 아니라 그룹 활동에 어울리는 이미지를 넣어야함

SharePlay 구현 시 주의사항

  • 사람들이 떨어져 있을 때와 가까이 있을 때 두 가지 유형의 SharePlay 경험을 모두 고려할 것
    • 앱에서 Group Activities 활동을 쉽게 검색할 수 있도록 아래 SharePlay 버튼을 앱의 UI에서 직접 제공해야함

앱에서 직접 제공해야하는 SharePlay 버튼

  • metadata에는 상태 변경에 관한 내용도 담을 수 있는데, 여기서 다른 사람이 보았을때 상태 변경이 일어난 사람이 어떤 활동을 하고 있는지 알 수 있게끔 알도록 내용을 남길 것

상태 변경을 알려주는 metadata

  • 모든 앱은 SharePlay를 사용할 수 있고 그렇다는 것은 모든 앱은 FaceTime, Messsages, AirDrop 그룹에 접근할수 있는 기회가 있음

* 참고

https://www.apple.com/kr/newsroom/2021/11/shareplay-powers-new-ways-to-stay-connected-and-share-experiences-in-facetime/

https://developer.apple.com/videos/play/wwdc2023/10239/

Comments