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

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

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

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

2回答

2422閲覧

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

sdnco

総合スコア21

iOS

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

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2015/10/29 20:52

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

swift

1// ViewController.swift 2import UIKit 3 4class ViewController: UIViewController, UITextViewDelegate{ 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 NSNotificationCenter.defaultCenter().addObserver(self, selector:"popUpText:", name: "actionOnePressed", object: nil) 10 NSNotificationCenter.defaultCenter().addObserver(self, selector:"showAMessage:", name: "actionTwoPressed", object: nil) 11 NSNotificationCenter.defaultCenter().addObserver(self, selector:"showAText:", name: "actionThreePressed", object: nil) 12 13 //2015年10月30日01時25分00秒のNSDateを作成 14 let dateFormatter = NSDateFormatter() 15 dateFormatter.dateFormat = "yyyy-MM-dd hh:mm:ss"; 16 let dateOf2015_10_30_01_25_00 = dateFormatter.dateFromString("2015-10-30 01:25:00")!; 17 var date:NSDate = NSDate(); 18 date = NSDate(timeInterval: 10, sinceDate: dateOf2015_10_30_01_25_00);//2015年10月30日:1時25分より10秒後 19 20 let calendar = NSCalendar(identifier: NSCalendarIdentifierGregorian)! 21 22 var notification:UILocalNotification = UILocalNotification() 23 notification.category = "remainder" 24 notification.alertBody = "出席確認" 25 26 notification.fireDate = date 27 28 29 UIApplication.sharedApplication().scheduleLocalNotification(notification) 30

これで2015/10/30 1:25に送ることが出来ました。でも例えばこの場合だったら"1:25"だけを参照したいんです。何かいい方法あったら教えてください;

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

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

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

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

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

guest

回答2

0

ベストアンサー

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

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

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

投稿2015/10/30 01:45

TakutoNagano

総合スコア150

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

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

sdnco

2015/10/30 09:48

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

2015/11/01 05:01

すいません..これってSwiftに書き換えるとなるとどうなりますかね; 自分なりにやってみたのですが上手くいかなかったです..。 NSArray *oneweekDate = [self.datePicker.date oneWeekDateWithEnableWeekdayType:YSWeekdayTypeSunday | YSWeekdayTypeTuesday | YSWeekdayTypeFriday]; for (NSDate *date in oneweekDate) { [self configureNotificationWithDate:date];
TakutoNagano

2015/11/04 01:39

oneWeekDateWithEnableWeekdayType:メソッドは、こちらの方の独自メソッドですね。 「指定した日から7日間以内の指定曜日に該当する日付の配列」を取得するようです。 Qiita内からリンクが貼ってある先に実装内容がかかれています。 ただ、sdncoさんには必要のない部分かもしれないのでconfigureNotificationWithDate:だけで求めている動きになるか確認してみてください。
guest

0

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

投稿2015/10/29 22:35

編集2015/10/30 00:05
fuzzball

総合スコア16731

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

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

sdnco

2015/10/30 09:51

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問