Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
iOSの画面の状態のアレコレを調査してみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Ryu-nakayama
September 19, 2025
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSの画面の状態のアレコレを調査してみた
mobile.stmn #13の登壇資料です
Ryu-nakayama
September 19, 2025
More Decks by Ryu-nakayama
See All by Ryu-nakayama
AIに「任せない」という選択
ryunakayama
0
120
iOS機能開発のAI環境と起きた変化
ryunakayama
0
310
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
460
iOSアプリでフロントエンドと仲良くする
ryunakayama
0
180
「ジェン文字」使ってますか?
ryunakayama
0
110
Health Kit × Foundation Models でAIコーチを作ってみた
ryunakayama
0
380
作文ツール(Writing Tools)をアプリから制御する
ryunakayama
0
100
iOSアプリで測る!名古屋駅までの 方向と距離
ryunakayama
0
340
「ジェン文字」をアプリ内で使ってみよう
ryunakayama
0
240
Other Decks in Programming
See All in Programming
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
130
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.1k
Web3Dライブラリを作ってVue Custom Rendererの仕組みを理解しよう / lets learn vue custom renderer by making 3d library
drumath2237
1
120
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.3k
AmebaブログはKMPから卒業します
kmars0605
0
310
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
1
2k
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
210
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
160
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
400
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
260
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
130
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
340
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
We Have a Design System, Now What?
morganepeng
55
8.4k
Balancing Empowerment & Direction
lara
6
1.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
It's Worth the Effort
3n
188
29k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
290
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
Building Adaptive Systems
keathley
44
3.3k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
810
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
440
Code Reviewing Like a Champion
maltzj
529
40k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
560
Transcript
iOSの画面の状態のアレコレを調査 してみた iOSアプリ開発グループ 機能開発チーム 中山 龍 2025年08月29日
2 中山 龍 (なかやま りゅう) • 株式会社kubell ◦ 新卒3年目のiOSエンジニア(23) ◦
「Chatwork」アプリの開発を担当 ◦ 機能開発チーム(愛称: Ciel) チームリーダー • 愛知県在住 ◦ 自己紹介 @ryu_develop 来月のiOSDCでブースを出すので ぜひお越しください
ARグラス買いました!
4 最近、ARグラス買いました XREAL SHOP より引用 前々から気になっていた『XREAL One Pro』を購入 してみました! iPhone・iPad・Mac・PS5などに繋いでどこでも大画
面を楽しんでいます オフィスに行った際にこれをつけて仕事をしていたら 「めっちゃ目立ってる人いた」って言われました
5 最近、ARグラス買いました XREAL SHOP より引用 XREAL One Proを使ってiPhoneのアプリを使用して いると稀に「このアプリは録画を禁止しています」 のように、使えないアプリがあることに気がつきま
した なので、「録画や画面ミラーリングが現在されてい る」など、画面の状態をアプリ側の処理で扱う方法 について調査してみました
01 | スクリーンショット
スクリーンショットを検知する UIApplication.userDidTakeScreenshotNotification という NSNotification.Name で検知することができる スクリーンショットを撮影
スクリーンショットを検知する(サンプル) NotificationCenter.default.addObserver( forName: UIApplication.userDidTakeScreenshotNotification, object: nil, queue: .main ) {
_ in // イベント発生時の処理 } イベント購読のサンプルコード
02 | 画面録画
画面録画を検知する UIScreen.capturedDidChangeNotification という NSNotification.Name で録画状態変更のイベントを検知することができる UIScreen.main.isCaptured で現在録画中かどうかを判定できる 録画 停止
画面録画を検知する(サンプル) NotificationCenter.default.addObserver( forName: UIScreen.capturedDidChangeNotification, object: nil, queue: .main ) {
_ in if UIScreen.main.isCaptured { // 録画が開始された際の処理 } else { // 録画が停止された際の処理 } } イベント購読のサンプルコード
03 | 外部ディスプレイ
外部ディスプレイの使用を検知する UIScreen.didConnectNotification という NSNotification.Name でスクリーンへの接続を検知することができる UIScreen.didDisconnectNotification という NSNotification.Name でスクリーンの切断を検知することができる 接続
切断
外部ディスプレイの使用を検知する UIScreen.didConnectNotification という NSNotification.Name でスクリーンへの接続を検知することができる UIScreen.didDisconnectNotification という NSNotification.Name でスクリーンの切断を検知することができる 接続
切断 ⚠ この方法は現在、非推奨となっている
外部ディスプレイの使用を検知する(推奨) scene(_:willConnectTo:options:) 接続 UIScene.willConnectNotification 切断 sceneDidDisconnect(_:) UIScene.didDisconnectNotification sceneのdelegateメソッドかUIScene由来のものが推奨されている
画面録画の検知と 外部ディスプレイについて
画面録画を検知している状態で外部ディスプレイを接続すると... 画面録画をしていないにも関わらず、ディスプレイを繋い だだけで録画中の判定になってしまう... → capturedDidChangeNotification や isCaptured で扱う ことができるCaptureというのは、画面録画だけでなく、外 部ディスプレイへの投影やAirPlayも含まれてしまうとのこ
と 参考 ・capturedDidChangeNotification ・isCaptured
画面録画を検知している状態で外部ディスプレイを接続すると... 画面録画をしていないにも関わらず、ディスプレイを繋い だだけで録画中の判定になってしまう... → capturedDidChangeNotification や isCaptured で扱う ことができるCaptureというのは、画面録画だけでなく、ミ ラーリングやAirPlayも含まれてしまうとのこと
参考 ・capturedDidChangeNotification ・isCaptured AR グラスで使えないアプリはこれが原因っぽい!! Captureの状態と画面接続の状態と組み合わせて判定しても、画面録画をNGにし つつ、ディスプレイ接続のみはOKというのはできない気がしました (ディスプレイ接続中の画面録画を検知できない) 何かいい方法やAPIをご存じの方がいたら教えてください
まとめ
まとめ 検知すること 方法 スクリーンショット UIApplication.userDidTakeScreenshotNotification 画面録画 (ディスプレイ接続などを含む) UIScreen.capturedDidChangeNotification (録画状態の変化) UIScreen.main.isCaptured
(録画状態の判定) 外部ディスプレイの使用(接続) scene(_:willConnectTo:options:) UIScreen.didDisconnectNotification 外部ディスプレイの使用(切断) sceneDidDisconnect(_:) UIScene.willDisconnectNotification • ARグラス接続状態でアプリが利用できない場合は、画面録画の検知に用いる Captureにディスプレイ接続も含まれていることでARグラス接続を画面録画 と認識して使用NGの処理をしてしまっているためだと考えられる • 画面録画とディスプレイ接続を区別する(画面録画は完全にNGにしつつ、ディ スプレイ接続をOKにする)のは難しそうだということがわかった
働くをもっと楽しく、創造的に