Skip to content

Commit

Permalink
Merge branch 'release/2024.3.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
miosakuma committed Sep 6, 2024
2 parents 722d676 + ab2668b commit 670240d
Show file tree
Hide file tree
Showing 16 changed files with 130 additions and 60 deletions.
14 changes: 0 additions & 14 deletions .github/renovate.json

This file was deleted.

42 changes: 30 additions & 12 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
name: Build

on:
workflow_dispatch:
push:
paths-ignore:
- 'README.md'
- 'CHANGES.md'
- 'LICENSE'
- 'Sora.podspec'
schedule:
- cron: "0 0 * * *"

jobs:
build:
runs-on: macos-14
env:
XCODE: /Applications/Xcode_15.2.app
XCODE_SDK: iphoneos17.2
XCODE: /Applications/Xcode_15.4.app
XCODE_SDK: iphoneos17.5
steps:
- uses: actions/checkout@v4
- name: Select Xcode Version
Expand Down Expand Up @@ -52,14 +51,32 @@ jobs:
- name: Check uncommitted unformatted code
run: |
./lint-format.sh
- name: Slack Notification
if: failure()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: sora-ios-sdk
SLACK_COLOR: danger
SLACK_TITLE: Build failed
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
slack_notify_succeeded:
needs: [build]
runs-on: ubuntu-latest
if: success()
steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: sora-ios-sdk
SLACK_COLOR: good
SLACK_TITLE: SUCCEEDED
SLACK_ICON_EMOJI: ":star-struck:"
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
slack_notify_failed:
needs: [build]
runs-on: ubuntu-latest
if: failure()
steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: sora-ios-sdk
SLACK_COLOR: danger
SLACK_TITLE: "FAILED"
SLACK_ICON_EMOJI: ":japanese_ogre:"
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
release:
if: contains(github.ref, 'tags/v')
needs: [build]
Expand All @@ -69,6 +86,7 @@ jobs:
uses: actions/checkout@v4
- name: Create Release
id: create_release
# TODO: https://github.com/softprops/action-gh-release への置き換えを検討する
uses: actions/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
2 changes: 1 addition & 1 deletion .jazzy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ theme: apple
min_acl: public
sdk: iphoneos
module: Sora
module_version: 2024.2.0
module_version: 2024.3.0
swift_version: 5.10.0
xcodebuild_arguments:
- -parallelizeTargets
Expand Down
47 changes: 45 additions & 2 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,49 @@

## develop

## 2024.3.0

**リリース日**: 2024-09-06

- [CHANGE] `MediaChannelConfiguration` を非推奨にする
- SDK 内部では利用していないため
- @zztkm
- [UPDATE] WebRTC m127.6533.1.1 に上げる
- @miosakuma
- @zztkm
- [UPDATE] `SignalingOffer``simulcast` を追加する
- @zztkm
- [FIX] SignalingConnect の `metadata`, `signaling_notify_metadata` が nil の場合に {} として送信されてしまう問題を修正する
- @zztkm
- [FIX] `WrapperVideoEncoderFactory.shared.simulcastEnabled` の値を type: offer の際に設定される simulcast の値で上書きする
- 認証ウェブフック成功時に払い出された type: offer の `simulcast` の値が反映されない不具合への対応
- @zztkm
- [FIX] `Configuration.spotlightEnabled` はサイマルキャストを有効化するための条件ではないのに、判定条件に加わっていた問題を修正する
- `WrapperVideoEncoderFactory.shared.simulcastEnabled` の判定条件から `Configuration.spotlightEnabled` を削除する
- <https://github.com/shiguredo/sora-ios-sdk/commit/44f3b81fd81694f3f670e3de568afc2a6bab5f9f> の修正漏れ
- @zztkm
- [FIX] URL 構造体が TURN URI に対応していないのに、URL に変換していたのを修正する
- 意図しないエスケープが発生しないようにした
- @zztkm

### misc

- [UPDATE] GitHub Actions の定期実行をやめる
- build.yml の起動イベントから schedule を削除
- @zztkm
- [UPDATE] GitHub Actions の Xcode のバージョンを 15.4 にあげる
- 合わせて iOS の SDK を iphoneos17.5 にあげる
- @miosakuma
- [UPDATE] CocoaPods のソースリポジトリを GitHub から CDN に変更する
- CocoaPods 1.8 からソースリポジトリのデフォルトが `https://cdn.cocoapods.org/` になった
- <https://blog.cocoapods.org/CocoaPods-1.8.0-beta/>
- @zztkm
- [UPDATE] システム条件を変更する
- macOS 14.6.1 以降
- Xcode 15.4
- WebRTC SFU Sora 2024.1.0 以降
- @miosakuma

## 2024.2.0

- [CHANGE] シグナリング `connect` メッセージの `libwebrtc` に含まれるバージョン文字列を Android と揃える
Expand Down Expand Up @@ -82,7 +125,7 @@
- @torikizi
- [CHANGE] `@available(*, deprecated, ... )` としていた非推奨項目を削除する
- 非推奨であった項目について削除に移行する
- 移行方法については https://sora-ios-sdk.shiguredo.jp/ の移行ドキュメントに記載されている
- 移行方法については <https://sora-ios-sdk.shiguredo.jp/> の移行ドキュメントに記載されている
- @torikizi
- [CHANGE] 廃止された `onConnectHandler``onConnect` に置き換える
- すでに廃止済みの `onConnectHandler` が残っていたので、`onConnect` に置き換えた
Expand Down Expand Up @@ -209,7 +252,7 @@

- [FIX] Sora との接続確立後に WebSocket のエラーが発生した場合、 エラーが正しく伝搬されず、終了処理が実行されないため修正する
- 接続確立後に WebSocket のエラーが発生した場合、 Sora との接続を切断して終了処理を行うのが正しい処理です
- 詳細な仕様は https://sora-doc.shiguredo.jp/SORA_CLIENT に記載されています
- 詳細な仕様は <https://sora-doc.shiguredo.jp/SORA_CLIENT> に記載されています
- @enm10k

## 2022.1.0
Expand Down
4 changes: 2 additions & 2 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import Foundation
import PackageDescription

let file = "WebRTC-122.6261.1.0/WebRTC.xcframework.zip"
let file = "WebRTC-127.6533.1.1/WebRTC.xcframework.zip"

let package = Package(
name: "Sora",
Expand All @@ -16,7 +16,7 @@ let package = Package(
.binaryTarget(
name: "WebRTC",
url: "https://github.com/shiguredo/sora-ios-sdk-specs/releases/download/\(file)",
checksum: "dd5ce39710270c4498a1628461e00c17525369faf0ca0a7e258325b99f21ee8e"
checksum: "b9242358b4d53cafdf19d75a731cea87c84205475f54816e3a5cfd99cdb03216"
),
.target(
name: "Sora",
Expand Down
4 changes: 2 additions & 2 deletions Podfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
source 'https://cdn.cocoapods.org/'
source 'https://github.com/shiguredo/sora-ios-sdk-specs.git'
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '13.0'

target 'Sora' do
use_frameworks!
pod 'WebRTC', '122.6261.1.0'
pod 'WebRTC', '127.6533.1.1'
end
4 changes: 2 additions & 2 deletions Podfile.dev
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
source 'https://cdn.cocoapods.org/'
source 'https://github.com/shiguredo/sora-ios-sdk-specs.git'
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '13.0'

target 'Sora' do
use_frameworks!
pod 'WebRTC', '122.6261.1.0'
pod 'WebRTC', '127.6533.1.1'
pod 'SwiftLint', '0.51.0'
pod 'SwiftFormat/CLI', '0.53.2'
end
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Sora iOS SDK

[![libwebrtc](https://img.shields.io/badge/libwebrtc-123.6312-blue.svg)](https://chromium.googlesource.com/external/webrtc/+/branch-heads/6312)
[![libwebrtc](https://img.shields.io/badge/libwebrtc-127.6533-blue.svg)](https://chromium.googlesource.com/external/webrtc/+/branch-heads/6533)
[![GitHub tag](https://img.shields.io/github/tag/shiguredo/sora-ios-sdk.svg)](https://github.com/shiguredo/sora-ios-sdk)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

Expand All @@ -20,11 +20,11 @@ Please read https://github.com/shiguredo/oss before use.

- iOS 13 以降
- アーキテクチャ arm64 (シミュレーターの動作は未保証)
- macOS 14.4.1 以降
- Xcode 15.3
- macOS 14.6.1 以降
- Xcode 15.4
- Swift 5.10
- CocoaPods 1.15.2 以降
- WebRTC SFU Sora 2023.2.0 以降
- WebRTC SFU Sora 2024.1.0 以降

Xcode と Swift のバージョンによっては、 CocoaPods で取得できるバイナリに互換性がない可能性があります。詳しくはドキュメントを参照してください。

Expand Down
4 changes: 2 additions & 2 deletions Sora.podspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = "Sora"
s.version = "2024.2.0"
s.version = "2024.3.0"
s.summary = "Sora iOS SDK"
s.description = <<-DESC
A library to develop Sora client applications.
Expand All @@ -15,7 +15,7 @@ Pod::Spec.new do |s|
}
s.source_files = "Sora/**/*.swift"
s.resources = ['Sora/*.xib']
s.dependency "WebRTC", '122.6261.1.0'
s.dependency "WebRTC", '127.6533.1.1'
s.pod_target_xcconfig = {
'ARCHS' => 'arm64',
'ARCHS[config=Debug]' => '$(ARCHS_STANDARD)'
Expand Down
4 changes: 2 additions & 2 deletions Sora.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -586,7 +586,7 @@
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MARKETING_VERSION = 2024.2.0;
MARKETING_VERSION = 2024.3.0;
PRODUCT_BUNDLE_IDENTIFIER = jp.shiguredo.sora.ios.sdk.Sora;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
Expand Down Expand Up @@ -620,7 +620,7 @@
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
MARKETING_VERSION = 2024.2.0;
MARKETING_VERSION = 2024.3.0;
PRODUCT_BUNDLE_IDENTIFIER = jp.shiguredo.sora.ios.sdk.Sora;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE = "";
Expand Down
10 changes: 6 additions & 4 deletions Sora/ICEServerInfo.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ public final class ICEServerInfo {
// MARK: プロパティ

/// URL のリスト
public var urls: [URL] = []
///
/// TURN URI はそのまま文字列として処理する
public var urls: [String] = []

/// ユーザー名
public var userName: String?
Expand All @@ -20,7 +22,7 @@ public final class ICEServerInfo {
public var tlsSecurityPolicy: TLSSecurityPolicy = .secure

var nativeValue: RTCIceServer {
RTCIceServer(urlStrings: urls.map { url in url.absoluteString },
RTCIceServer(urlStrings: urls,
username: userName,
credential: credential,
tlsCertPolicy: tlsSecurityPolicy.nativeValue)
Expand All @@ -29,7 +31,7 @@ public final class ICEServerInfo {
// MARK: 初期化

/// 初期化します。
public init(urls: [URL],
public init(urls: [String],
userName: String?,
credential: String?,
tlsSecurityPolicy: TLSSecurityPolicy)
Expand Down Expand Up @@ -60,7 +62,7 @@ extension ICEServerInfo: Codable {

public convenience init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
let urls = try container.decode([URL].self, forKey: .urls)
let urls = try container.decode([String].self, forKey: .urls)
let userName = try container.decodeIfPresent(String.self, forKey: .userName)
let credential = try container.decodeIfPresent(String.self, forKey: .credential)
self.init(urls: urls,
Expand Down
1 change: 1 addition & 0 deletions Sora/MediaChannelConfiguration.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import Foundation

@available(*, unavailable, message: "このクラスは廃止予定です。廃止後も利用したい場合はこのクラス定義をご自身のソースに組み込んで利用してください。")
public class MediaChannelConfiguration {
public static var maxBitRate = 5000

Expand Down
4 changes: 2 additions & 2 deletions Sora/MediaStream.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import WebRTC
ストリームの音声のボリュームの定数のリストです。
*/
public enum MediaStreamAudioVolume {
/// 最大値
/// 最小値
public static let min: Double = 0

/// 最小値
/// 最大値
public static let max: Double = 10
}

Expand Down
10 changes: 5 additions & 5 deletions Sora/PackageInfo.swift
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
/// :nodoc:
public enum SDKInfo {
// Sora iOS SDK のバージョンを定義する
public static let version = "2024.2.0"
public static let version = "2024.3.0"
}

/**
WebRTC フレームワークの情報を表します。
*/
public enum WebRTCInfo {
/// WebRTC フレームワークのバージョン
public static let version = "M122"
public static let version = "M127"

/// WebRTC フレームワークのコミットポジション
public static let commitPosition = "1"

/// WebRTC フレームワークのメンテナンスバージョン
public static let maintenanceVersion = "0"
public static let maintenanceVersion = "1"

/// WebRTC フレームワークのソースコードのリビジョン
public static let revision = "6b419a0536b1a0ccfff3682f997c6f19bcbd9bd8"
public static let revision = "e0b28a6a81a989c1f5c89e30fcd247870047390d"

/// WebRTC の branch-heads
public static let branch = "6261"
public static let branch = "6433"

/// WebRTC フレームワークのソースコードのリビジョン (短縮版)
public static var shortRevision: String {
Expand Down
9 changes: 7 additions & 2 deletions Sora/PeerChannel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -195,9 +195,9 @@ class PeerChannel: NSObject, RTCPeerConnectionDelegate {
lock.lock()
onConnect = handler

// TODO(zztkm): WrapperVideoEncoderFactory は type: offer メッセージを受け取ったときに設定されるので、ここでの設定は不要かもしれない
// サイマルキャストを利用する場合は、 RTCPeerConnection の生成前に WrapperVideoEncoderFactory を設定する必要がある
// また、スポットライトはサイマルキャストを利用しているため、同様に設定が必要になる
WrapperVideoEncoderFactory.shared.simulcastEnabled = configuration.simulcastEnabled || configuration.spotlightEnabled == .enabled
WrapperVideoEncoderFactory.shared.simulcastEnabled = configuration.simulcastEnabled

signalingChannel.connect { [weak self] error in
guard let weakSelf = self else {
Expand Down Expand Up @@ -828,6 +828,11 @@ class PeerChannel: NSObject, RTCPeerConnectionDelegate {
signalingOfferMessageDataChannels = dataChannels
}

// offer.simulcast が設定されている場合、WrapperVideoEncoderFactory.shared.simulcastEnabled を上書きする
if let simulcast = offer.simulcast {
WrapperVideoEncoderFactory.shared.simulcastEnabled = simulcast
}

createAndSendAnswer(offer: offer)
case let .update(update):
if configuration.isMultistream {
Expand Down
Loading

0 comments on commit 670240d

Please sign in to comment.