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

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

ただいまの
回答率

87.90%

【swift】目覚ましアプリの仕組みがわかりません

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 7,998

score 14

具体的には、
①日時を指定して
②バックグラウンドになり
③時間になるとアラームが鳴る
部分の仕組みです。

これは、ローカル通知でもできますが、ローカル通知では「30秒以上の音声ファイルを指定できない」「マナーモードでは音が鳴らない」などの点で、目覚ましアプリの機能とは異なります。
AVAudioPlayerでできると考えているのですが、通知機能を使わずに、指定した日時にバックグラウンドから音声ファイルを再生する方法がわかりません。

調べ方が悪いのか、根本的に考え方が間違っているのかもわからず、悩んでおります。
ご協力お願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

ズバリ解決の回答ではないのですが、回答がつかないようなので参考となりそうな情報を入れておきます。

https://www.google.co.jp/#q=ios+アラーム+アプリ+開発
で検索してみると、いろいろ苦労していて、ベストアンサーにはならない例がたくさん出てきます。

よくあるのは、無音のバックグラウンド再生を続け時間になったら本来の再生に切り替えるということですが、以下のような問題があります。

  • 無駄なバッテリー消費が発生する。
  • 他の音楽アプリと競合してバックグラウンド再生が停止する可能性がある。例えば、アラームをセットしてから寝る前に音楽を聴いたら、アラームは停止してしまう。
  • 本来のバックグラウンド再生の使用方法ではないため審査でリジェクトされる可能性がある。

また、リモートプッシュ通知のバックグラウンド機能を使うという案が書かれている記事もありましたが、通信が不安定で圏外となる環境では使えないし、このタイミングでプッシュ通知の通知音でなく、AVAudioPlayerで音楽を鳴らすというのが本当に可能なのかは検証が必要だと思います。(簡単に試してみましたが鳴りませんでした。AudioSessionをうまく設定すれば鳴るのかもしれませんが、そもそも圏外で使えないという欠陥があるのでそこまで検証していませんし、最終的にはやはりバックグラウンド機能の目的外使用ということで審査でリジェクトされる可能性も考えられます。)

そもそも、iPhone標準のアラーム機能と全く同じ機能を作るだけなら、やはり「標準アプリと同じものを作っただけでアプリの存在意義がない」ということでやはり審査でリジェクトされる可能性があります。
例えば、
睡眠中の安眠のためにバックグラウンドでやさしい音楽を鳴らすとか、
睡眠状態を記録するためにバックグラウンドでモーションセンサーを動作させ続けるとか、
自分の寝言を録音するために睡眠中に録音を続けるとか、
所定の場所に近づいたことを検出するためにロケーションの変更を受け取るとか、
そういった、バックグラウンドで必要な機能をアプリで実現した上で、
そのついでにバックグラウンド動作の終了時にアラーム音楽を鳴らすこともできる
ということであれば実装しやすく、Appleの審査も通りやすいと思います。

ついでに言うと、iOS標準のアラームアプリは、一般のアプリでは実現できない特別なOS内蔵アプリだと思います。アイコンの時計マークは実際の時刻を表すよう秒針がアニメーションしますし、アラームをセットしている間は、ステータスバーに時計マークが現れます。これらはいずれも一般のアプリでは実現できないものです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/07/31 13:06

    いろいろと調べていただき、ありがとうございました。iOS標準のアラームアプリは、特別だったのですね。回答を参考に考え直してみます。

    キャンセル

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

  • ただいまの回答率 87.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る