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

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

ただいまの
回答率

87.92%

日付ではなく時間だけを参照して通知を送らせる方法

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,647

score 19

"講義開始時間になったら出席しているかどうかの確認通知を送る"出席管理アプリを作っているのですが、プログラム上で決めた日時に通知を送らせることは出来ました。でも年,月,日は必要としないため、時,分の部分だけを参照して通知を送れるようにしたいです。そこで年,月,日の部分を消して時間だけ合わせて実行しても通知は送れませんでした。年月日を消すだけじゃダメなんでしょうか..?ご教授お願いしますm(_ _)m

//  ViewController.swift
import UIKit

class ViewController: UIViewController, UITextViewDelegate{
    
    override func viewDidLoad() {
        super.viewDidLoad()
      
        NSNotificationCenter.defaultCenter().addObserver(self, selector:"popUpText:", name: "actionOnePressed", object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector:"showAMessage:", name: "actionTwoPressed", object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector:"showAText:", name: "actionThreePressed", object: nil)

        //2015年10月30日01時25分00秒のNSDateを作成
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss";
        let dateOf2015_10_30_01_25_00 = dateFormatter.dateFromString("2015-10-30 01:25:00")!;
        var date:NSDate = NSDate();
        date = NSDate(timeInterval: 10, sinceDate: dateOf2015_10_30_01_25_00);//2015年10月30日:1時25分より10秒後

    let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)!

      var notification:UILocalNotification = UILocalNotification()
        notification.category = "remainder"
        notification.alertBody = "出席確認"
       
        notification.fireDate = date
        
        
        UIApplication.sharedApplication().scheduleLocalNotification(notification)
これで2015/10/30 1:25に送ることが出来ました。でも例えばこの場合だったら"1:25"だけを参照したいんです。何かいい方法あったら教えてください;
  • 気になる質問をクリップする

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 2

checkベストアンサー

0

出席管理アプリということは、「毎週指定した時間にローカル通知を出す」ことが最終的にやりたいことなのかなと思ったので軽く調べてみました。

Objective-Cで記述されていますが、そのままSwiftに書き換えれば使用できると思います。
UILocalNotification 毎週指定時間に通知されるローカル通知の設定

今後、やりたい事を検索したらObjective-Cのコードが見つかった、という場面はたくさんあると思います。
なので、Swiftに書き換えることに慣れていくことをお勧めします。
基本的にクラス名は変わらないので、入力補助機能を頼りにしていけば大体は簡単に書き換えられます。
ただ一部メソッド名がSwift側で省略されていたり(というより不要な部分が削られた)することがあるので
その場合は「"そのメソッド名" swift」などで検索をかければ書き換え結果が見つかると思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/10/30 18:48

    回答ありがとうございます!
    これを参考にやってみます。

    キャンセル

  • 2015/11/01 14:01

    すいません..これってSwiftに書き換えるとなるとどうなりますかね;
    自分なりにやってみたのですが上手くいかなかったです..。

    NSArray *oneweekDate = [self.datePicker.date oneWeekDateWithEnableWeekdayType:YSWeekdayTypeSunday | YSWeekdayTypeTuesday | YSWeekdayTypeFriday];
    for (NSDate *date in oneweekDate) {
    [self configureNotificationWithDate:date];

    キャンセル

  • 2015/11/04 10:39

    oneWeekDateWithEnableWeekdayType:メソッドは、こちらの方の独自メソッドですね。
    「指定した日から7日間以内の指定曜日に該当する日付の配列」を取得するようです。
    Qiita内からリンクが貼ってある先に実装内容がかかれています。

    ただ、sdncoさんには必要のない部分かもしれないのでconfigureNotificationWithDate:だけで求めている動きになるか確認してみてください。

    キャンセル

0

「今日の○時◯分」のNSDateの作り方は、以前の回答に書きましたが、これではダメなのでしょうか?
https://teratail.com/questions/18383

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2015/10/30 18:51

    回答ありがとうございます!
    そうですねー..この前送っていただいたそのプログラムだとverが違うらしく色々自分なりに調べたんですがエラーを上手く取り除けなかったんです;

    キャンセル

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

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

関連した質問

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