0

音楽プレーヤー コントロールを含む iOS 8 のサンプル ウィジェットを実装しようとしています。このアプリは、バックグラウンド オーディオが有効になっている基本的な音楽アプリです。

含まれているアプリを通知する方法を見つけるためにいろいろ調べましたが、何も見つかりませんでした!.

シナリオは基本的に、アプリが一時停止状態にあり、選択した曲/アルバム (特定の曲で一時停止している可能性があります) にあり、再生/停止/次のボタンなどを使用してウィジェットに名前を表示する必要があります。

Apple のドキュメント、および使用シナリオを説明するこのドキュメントに基づいています: https://developer.apple.com/library/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensibilityPG.pdf

拡張機能は長時間の実行を処理すべきではないと述べており、オーディオ再生は拡張機能の外部で実行する必要があるため、サポートされていないケースとして具体的に述べています。しかし、そのようなシナリオで含まれているアプリをトリガーする方法については言及していませんでした。大きなファイルのダウンロードを処理し、バックグラウンドでアプリをウェイクアップして handleEventsForBackgroundUrlSession を呼び出すことができる NSURLSession 手法と、含まれているアプリと拡張機能の両方が可能な App-Group 共有機能について言及しただけです。共有データ コンテナーにアクセスします。述べられている唯一の実行可能なソリューションは、アプリ全体を強制的にフォアグラウンドにする openURL ソリューションです。

デモ用に 1 つの App-Group をセットアップし、カスタム通知を使用して NSNotificationCenter の呼び出しを試みました。アプリと拡張機能を含むそれぞれで addObserver/postNotificationName を呼び出しましたが、まったく機能しませんでした。代わりに App-Group の NSUserDefaults を変更しようとしましたが、これはアプリの背景を含む場合にも発生しません。

関連する可能性のあるいくつかの質問を次に示しますが、答えが見つかりませんでした: (アプリ拡張機能とコンテナー アプリの間でデータを共有する) --- (アプリがバックグラウンドから再開したときに NSUserDefaultsDidChangeNotification が送信されない) --- (通知を設定する今日の拡張ウィジェットから

無理かもしれないと思ったのですが、TapTunes というアプリを見つけたところ、拡張機能自体にすべてのコントロールを含む同様の機能を持つウィジェットが最近追加されました。

ありがとう。

4

1 に答える 1

0

問題は、カスタム オーディオを再生したいのか、それとも iOS ミュージック プレーヤーのトラックだけを再生したいのかということです。

私には、TapTunes が標準の音楽プレーヤーを使用しているように見えます。これは、MPMusicPlayerController ( https://developer.apple.com/library/ios/documentation/MediaPlayer/Reference/MPMusicPlayerController_ClassReference/ )を使用して実現できると思います。

カスタム オーディオを再生したい場合は、通常、特別なオーディオ バックグラウンド モードを有効にし (こちらを参照してください: http://www.raywenderlich.com/29948/backgrounding-for-ios )、フィードのために継続的に呼び出されるコールバックを用意します。たとえば、インターネットからの新しい音声データ。おそらく、現在のアクション (「次のトラック」、「前のトラック」など) を通知するコールバックで NSUserDefault キーを観察することができます。これらは、アクションが実際に実行されるまでの遅延につながる可能性があると思います.

とにかく、ウィジェットが App Store によって拒否されても驚かないでください。App Store は最近、通常の「簡単な情報を表示する」という概念に従わないウィジェットに非常に注意を払っているようです。TapTunes が承認されたからといって、あなたのアプリも承認されるわけではありません。

于 2014-11-09T11:25:43.837 に答える