質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

3回答

4996閲覧

iOSでのマイクアクセス許可ができない

osanpo

総合スコア13

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

1クリップ

投稿2017/05/15 04:19

編集2017/05/15 04:44

iOSでのマイクアクセス許可について

iPad用の音声録音を行うアプリを開発しています。
開発開始当時はiOS9である程度動作していました。その後iOSのアップデートに伴ってiOS10でのテストで問題なく動作しています。

ところがiOS9.3の入った実機で動作させたところマイクからの音声が入ってきませんでした。通常だと最初の起動時にアクセス許可のダイアログが出て許可することでマイク音声が入るようになりますが、これが出ません。プライバシー設定にもこのアプリが登録されていないので許可も不許可もされていない状況です。
実機だけで起こりシミュレータでの動作時にはこの現象が起こりません。

そこで起動時に明示的にチェックロジックを入れてステータスによってダイアログを出すようにしたところ、許可未選択(AVAuthorizationStatusNotDetermined)のステータスが返ってきます。
AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudioで明示的に許可を取りに行くとダイアログが表示されないで不許可で返ってくるので内部的には不許可状態になっています。

許可を得るためのロジックに問題があるのではないかと別に空のアプリを作ってこの処理だけを入れてみたところiOS9.3でも問題なく動作しているので私のアプリの他の部分と何らかの干渉があるのかもしれません。こちらのテストアプリではプライバシー設定にちゃんと登録されます。

チェック処理をアプリが起動してからできるだけ早い段階で実行するようにして他との干渉を防いでみても状況が変わりません。

検索してみると以前カメラのアクセス許可で同様の症状の質問が出ていましたが、その問題そのものについての解決が書き込まれていない状態で解決になっており残念ながらヒントになりませんでした。

色々と試してみても解決せず手詰まりとなっています。このような現象に心当たりのある方はアドバイスいただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

念のため、
https://teratail.com/questions/36754
を参考に、info.plistのCFBundleDisplayName(Bundle display name)が空文字に設定されてないか確認してみてください。
iOS9では、ここに空文字を設定すると、アクセス許可の動作がおかしくなります。

投稿2017/05/24 07:00

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

osanpo

2017/05/25 00:53 編集

ありがとうございます。 確認して見るとdisplay nameの設定がありませんでしたので追加しましたが、残念ながら状況が変わりません。 何らかの設定がまずい可能性しかないと思うんですが、どこから手をつけるべきか。 時間ぶ余裕があるときに新規プロジェクトにソースを追加する方法で再構築するしかないかと思い始めています。iOS10なら動くので対応を絞ってしまう手もあるのですが。いまのところ緊急案件ではないのでもう少しあがいてみます。
TakeOne

2017/05/25 01:04

display nameの設定がなかったというのは、CFBundleDisplayNameのキーはあったけど その設定が空白だったということでしょうか? それともCFBundleDisplayNameのキー自体が なかったということでしょうか? 前者であれば、念のため既にインストールしてあった問題のアプリを一度削除し、端末を再起動してから、改めてXcodeでアプリをインストールして確認してみることをお勧めします。 後者であれば今回のコメントは関係ない話です。もともとなかったところに、わざわざCFBundleDisplayNameのキーを追加する必要はありません。
TakeOne

2017/05/25 01:12

どうやって調査したらいいかですが、別の空きのアプリでうまく動作するということであれば、 本来のアプリのプロジェクトをコピーし、マイクアクセス許可以外の機能を全部落としたものを作って動かしてみて、 →それがうまく動作するなら、すこしずつ機能を戻して行って、どこで問題が発生し始めるか調査する。 →それがうまく動作しないなら、別の空きのアプリとの違いを徹底的に調べる。 違っている細かい設定も少しずつ同じにしていって、どこで問題の発生が変わるかを調べる。 という感じで進めるしかないかと思います。
osanpo

2017/05/25 01:44 編集

もともとありませんでした。やはり関係なかったのかな。 iOS9で開発をはじめて動いていた物でiOS10に合わせて開発していて久しぶりに9で動かすとおかしいという話になったわけです。 xcodeのバージョンアップを繰り返している間に設定関係の不具合がでておかしくなるという現象が過去にもあったのでそのあたりもあやしいのかなって気がしています。 今後やれることは録音以外に複数の機能を持っているアプリで画面移動などもあるので空のプロジェクトを作ってまずメインメニューと録音関連の機能だけを入れた物を作って試してみるのが一番かなと思っています。 おっしゃるように単純なところに立ち戻るしかない状況まで来ています。ただいろいろと込み入っていますので再構築作業は気が重いです。中途半端にやり出すと大混乱に陥りそうなので落ち着いたときにやってみます。
guest

0

http://dev.classmethod.jp/smartphone/iphone/ios10-privacy-data-purpose-description/

iOS 10 からユーザーデータにアクセスする時には使用目的を Info.plist に記述する必要があります。
iOS 9 で動いているようですのでこれかな?と思います。

投稿2017/05/15 05:31

TakeoAsai

総合スコア880

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiroshiWatanabe

2017/05/15 06:12

強制終了するような事は書いてないですしiOS10のテストで問題ないとも書いてあるので原因としては違うような印象を受けましたが…
osanpo

2017/05/15 06:21

コメントありがとうございます。この点はiOS10に対応した時にplistに追加しています。iOS10では動いているんですが、いつの間にか9で動かなくなっていたんです。
osanpo

2017/05/15 07:46

TakeoAsaiさん、ありがとうございます。 教えていただいたページにある方法や色々と検索して一通り試してみましたが、ダメでした。手元の一台は完全に初期化してからやり直しました。 今のところ特定の一台ではなく少なくとも3台のiOS9のiPadで音声が入ってこない状況なので特定の環境ではないと思っています。 一番不思議なのは設定>プライバシーに反映されていないし、必ず未選択のステータスが返ります。
guest

0

現時点ではまだ解決していません。
状況を整理するために新しいプロジェクトを作ってコードを移植する方法しかないかなっと思っています。
長くなりましたので一旦この質問は閉じたいと思います。

投稿2017/06/13 02:42

osanpo

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問