> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ones1ght.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Release Note - iOS

> Release Note - OneS1ght for iOS

<Info>
  iOS SDK の最新バージョンをお探しの場合は [SDK ダウンロード](https://github.com/onecheck-inc/OneS1ght-iOS-SDK) をクリックしてください<br />
</Info>

## 0.1.12 — 2026-08-27

**ログにレベルが付きました。**

<Warning>
  **破壊的変更** — `onDebugLog` と `onLog` のクロージャ引数が 2 つになりました。
  [移行ガイド](/sdk/integration/ios/migration-guide) をご確認ください。
</Warning>

```swift theme={null}
OneS1ght.onDebugLog = { level, line in ... }   // 以前: { line in ... }
```

以前は文字列だけが渡され、受け取る側が**先頭の絵文字からレベルを推測**していました。
文言を直すと静かに別のレベルになってしまい、実際に「この階にエリアがない」という
正常な状態がエラーとして表示されていました。

```swift theme={null}
public enum LogLevel { case log, info, warn, error }   // log < info < warn < error
```

`Comparable` なので `level >= .warn` のように絞り込めます。
84 件の文言すべてにレベルを付けました — エリアがない階は `info`、呼び出し順序の誤り
(セッション ID 未設定・階の未指定)は `error` です。

<hr />

## 0.1.11 — 2026-08-27

**エリアを削除すると判定も止まります。** アプリが SDK の言語を指定できます。

* **空のエリア一覧がエンジンまで届きます。** 内部で空の一覧を除外していたため、
  コンソールでエリアをすべて削除してもエンジンは削除済みのエリアを保持し続けていました。
  地図から消えた場所で無くなったはずの施策が発火し、エリアのない階に切り替えても
  前の階のエリアで判定していました。

* **`setLanguage(_:)`** — アプリが独自の言語設定を持つ場合に使います。

  ```swift theme={null}
  OneS1ght.setLanguage("ja")   // SDK のログ・案内も日本語に
  OneS1ght.setLanguage(nil)    // 端末の言語に従う (既定)
  ```

* 判定が動いていない旨の警告が、原因を区別して伝えます。「エリア未投入または start 失敗」
  の 1 行では、どちらなのか分かりませんでした。前者はコンソールでエリアを作れば済み、
  後者は不具合です。

<hr />

## 0.1.10 — 2026-08-27

**中断から戻った測位が再開されます。**

一度中断されると座標がその場で止まったまま戻りませんでした。NearbyInteraction は
中断が解けても自動で再開しません — `sessionSuspensionEnded` が届くこと自体が
「もう一度 `run` してよい」という合図で、その再実行が漏れていました。

エラーも出ず状態は「測位中」のままなので、画面上は**点が動かないだけ**でした。
中断はアプリが一瞬バックグラウンドに移るだけでも起きるため、症状が断続的に見えていました。

<hr />

## 0.1.9 — 2026-08-26

**測位できない端末でも図面とエリアを表示できます。**

<Warning>
  **破壊的変更** — `initialize` が端末非対応で失敗しなくなりました。
</Warning>

端末チェックが `initialize` の最初にあったため、UWB チップのない端末ではセッション自体が
作られませんでした。その結果 `buildings`・`floors`・`zones`・`locators` がすべて塞がれ、
**画面に描くものが何も残りませんでした。** 測位できないことと地図を表示できないことは
別の問題なのに、ひとつに束ねられていました。

```
initialize  →  キー検証 + テナント設定の受信      (端末は見ない)
begin()     →  測位開始                          ← ここで deviceNotSupported
```

`initialize` の成功を「この端末で測位可能」と読んでいた場合は
`OneS1ght.deviceAvailability` で尋ねるか、`begin()` の throw を受けてください。

また **リアルタイム変更イベントが 1 件も届いていなかった問題**を修正しました。SSE は
空行でフレームが終わりますが、読み取りに使っていた API がその空行を返さず、フレームが
ひとつも完成していませんでした。接続直後の再同期はパーサーを通らないため、
**接続もでき最初の更新も正常に見え**、症状は「更新ボタンを押さないと反映されない」だけでした。

階の一覧取得時に階ごとの図面を丸ごと受信していた点(1 階あたり 888KB)も併せて直しました。

<hr />

## 0.1.8 — 2026-08-25

**リアルタイム受信が測位開始前から繋がります。**

`onConfigChanged` が測位セッションの区間だけに繋がっていたため、階を選んで図面を見ている
間はコンソールで何を変更してもアプリに届きませんでした。これからは**階を指定した時点から**
繋がり、測位を止めても切断しません。

<hr />

## 0.1.7 — 2026-08-24

**建物を選んでも階が表示されない問題を修正しました。**

GeoSpace の建物ツリーは階 ID を**数値**で送りますが(`"floorId": 14`)、デコーダーが文字列と
宣言されていたため JSON のデコードが丸ごと失敗していました。呼び出し側がエラーを飲み込んで
いたため、症状は「階の一覧が空」だけでした。

<hr />

## 0.1.6 — 2026-08-21

コード変更なし。**連携サンプルがコンパイルできない問題を修正しました。**

`??` の右辺は autoclosure のため `try`/`await` を置けません。

```swift theme={null}
let profileId: String
if let saved = savedProfileId {
    profileId = saved
} else {
    profileId = try await OneS1ght.createProfile(["gender": "F", "ageBand": "20s"])
}
OneS1ght.identify(profileId: profileId)
```

<hr />

## 0.1.5 — 2026-08-21

コード変更なし。**リポジトリのアドレスが変わりました。**

```
onecheck-inc/onesight-mobile-swift  →  onecheck-inc/OneS1ght-iOS-SDK
```

```swift theme={null}
.package(url: "https://github.com/onecheck-inc/OneS1ght-iOS-SDK", from: "0.1.0"),
.product(name: "OneS1ght", package: "OneS1ght-iOS-SDK"),
```

<Warning>
  **`package:` の識別子も合わせて変更してください。** SPM は識別子をリポジトリ名から
  取るため、URL だけ直すと `unknown package 'onesight-mobile-swift'` でビルドが壊れます。
  Xcode プロジェクトの場合はパッケージ依存を一度削除し、新しいアドレスで追加し直します。
</Warning>

<hr />

## 0.1.4 以前 — 2026-08-20 \~ 08-21

初回配布とその直後の修正です。全履歴は
[CHANGELOG](https://github.com/onecheck-inc/OneS1ght-iOS-SDK/blob/main/CHANGELOG.md) を
ご確認ください。

<Warning>
  `0.1.3` 以前は現在の運用サーバーと初期化に失敗します。`0.1.12` 以降をお使いください。
</Warning>
