質問: * 対象環境: macOS Sierra, El Capitan * 使用言語: Swift 3.x(最新のもの)(Objective-C / C言語でも大丈夫です) * やりたいこと:SafariのようにOSの設定を無視して(1つのViewのみ)ミュートする。 WebViewを使用し外部Flashコンテンツを表示するアプリケーションを作っています。 Flashから再生される音声をミュートしたいのですが、どこから検索すればいいのかさえ分からない状況です。 1つのViewのみと書きましたが、OSの設定を無視できればアプリケーション全体をミュートでも構いません。 SafariのようにというのはOSの設定を変更することなく、自アプリ内のみミュートするということです。 外部FlashコンテンツのためFlashを書き換えてFlash自体で任意のタイミングでミュート可能にすることはできません。 作っているものはこれです。 OSDNのページ * 追記 情報へのポインタでも構いません。 よろしくお願いします。 --- * 追記 2017.04.27 CoreAudioにあたりをつけて以下のテストコードを試してみました。(Swiftに慣れてないのでobjcです) > > ここに動かないソースコードがありました > > > 結果はミュートされない、です。 何か情報がありましたらよろしくお願いします。 --- * 追記 2017.05.16 OSSの方のWebKitにてアタリを引きました。 現在詳細を調査中です。 まとまりましたら回答いたします。 回答を頂いた方、この質問に興味を示された方々ありがとうございました --- * 追記 2017.05.17 いろいろ試した結果上記方法はプロセスごとのミュートでした そのため別プロセスで動くFlashでは機能しないことが分かりました 現在WebKitによって起動された別プロセスへのアクセス、そのプロセス上での処理が可能かを調査中です リンクを忘れていたのでリンクしておきます WebKitでの該当部分 --- * 追記 2017.05.20 WKWebKitを用いることにより希望どおりの動作 - WKWebViewごとにミュートする - を実現できました。 ただ、WKWebKitへのハックを行なっているためここに回答として記載して良いか分かりませんので、回答は控えさせていただきます。
回答: WKWebViewを用い、WKWebKitをハックすることにより可能。