Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iOSDC2021_LiveStreaming

asa
September 17, 2021

 iOSDC2021_LiveStreaming

iOSDC Japan 2021の登壇資料です。
アニメーションのついた資料でしたがPDF化に伴い静止画になりました。

asa

September 17, 2021
Tweet

More Decks by asa

Other Decks in Technology

Transcript

  1. Live Streaming Agora RTN 自社サーバー Streamer ① ② ③ ①

    ② ③ Get a token from the server Create and Join an RTC channel Publish audio/video and subscribe to other user
  2. Live Streaming Agora RTN 自社サーバー Streamer ① ② ③ ①

    ② ③ Get a token from the server Create and Join an RTC channel Publish audio/video and subscribe to other user
  3. Live Streaming Agora RTN 自社サーバー Streamer ① ② ③ ①

    ② ③ Get a token from the server Create and Join an RTC channel Publish audio/video and subscribe to other user
  4. Create and Join an RTC channel RTNに接続するために必要な情報 appId Agoraプロジェクトのア プリID

    channelName チャンネルを一意に識別するID 自動で振り当てられるわけでは なく、自分たちで決める uid 認証されるユーザーのユーザー ID 一意である必要がある token 先ほど説明したToken
  5. lazy var agoraRtcKit: AgoraRtcEngineKit = { return AgoraRtcEngineKit.sharedEngine(withAppId: "ID", delegate:

    self) }() func joinChennel() { agoraRtcKit.joinChannel( byToken: "token", channelId: "channelName", info: nil, uid: "uid", joinSuccess: nil ) } extension viewController: AgoraRtcEngineDelegate { func rtcEngine(_ engine: AgoraRtcEngineKit, didJoinChannel channel: String, withUid uid: UInt, elapsed: Int) { print("ここに通知される") } }
  6. Live Streaming Agora RTN 自社サーバー Streamer ① ② ③ ①

    ② ③ Get a token from the server Create and Join an RTC channel Publish audio/video and subscribe to other user
  7. Real-Time Message Agora RTN 自社サーバー Streamer ① ② ③ ①

    ② ③ Get a token from the server Create and Join an RTM channel Publish message and subscribe to other user message
  8. Real-Time Message 接続するために必要な情報 appId Agoraプロジェクトのア プリID channelName チャンネルを一意に識別するID 自動で振り当てられるわけでは なく、自分たちで決める

    user 認証されるユーザーのユーザー ID 一意である必要がある token RTCで生成したToken とは別のToken 別途RTM用のAPIで Tokenを生成する必要 がある
  9. コメント機能 Agora RTN ① ② RTM ① ② Send a

    channel message Receivd a channel message ②
  10. ① ② Send a channel message Receivd a channel message

    let rtmMessage = AgoraRtmMessage.init(text: "text") rtmChannel?.send(rtmMessage, completion: { [weak self] state in if state == .errorOk { return } // 送信成功した時ここに入る }) extension ViewController: AgoraRtmChannelDelegate { func channel(_ channel: AgoraRtmChannel, messageReceived message: AgoraRtmMessage, from member: AgoraRtmMember) { // メッセージの受信 } }
  11. ブロック機能 Agora公式で案内されているシナリオ In a live streaming channel, the host can

    kick off a co-host or audience member who violates chatroom rules. You can use the peer-to-peer messaging function of the Agora RTM SDK. On the host's client, call sendMessageToPeer to notify the remote user to leave channel, and on the remote user's client, call leaveChannel after receiving the peer message in the onMessageReceived callback. 引用:https://docs.agora.io/en/Interactive%20Broadcast/faq/kick_user
  12. ブロック機能 Agora RTN ② ③ ③ RTM 自社サーバー ① ①

    ② ③ Call the block API on my server (optional) Send peer-to-peer message Receive a message and kick a user from channel
  13. ギフティング Agora公式で案内されているシナリオ To add more fun to interactive live streaming,

    you can enable virtual gift sending with the Agora RTM SDK. An audience member can send virtual gifts to the host. All members in the live streaming room can see the gift. 引用:https://docs.agora.io/en/Real-time-Messaging/faq/rtm_gift_sending?platform=iOS
  14. ギフティング Agora RTN ② ③ ③ RTM 自社サーバー ① ①

    ② ③ Call the block API on my server (optional) Send channel message Receive a message and kick a user from channel