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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

1556閲覧

UserNotificationsでローカル通知を実装したのですが、通知が来ない。

hik_

総合スコア42

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

1クリップ

投稿2018/08/31 08:19

編集2018/08/31 12:08

前提・実現したいこと

勉強の為ローカル通知を学習していたのですが、通知許可は出るのですが肝心の通知が出ません。

発生している問題・エラーメッセージ

エラーは出ないのですが、シミュレーターでビルドしても通知が出ません。

該当のソースコード

import UIKit // UserNotificationsをimport import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in if granted { print("許可されました") } else { print("許可されませんでした") } } return true }
import UIKit // UserNotificationsをimport import UserNotifications class ViewController: UIViewController { @IBAction func okButton(_ sender: Any) { // 通知を設定 let content = UNMutableNotificationContent() content.title = "タイトル" content.body = "こんにちは" content.sound = UNNotificationSound.default() let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false) let request = UNNotificationRequest(identifier: "Identifier", content: content, trigger: trigger) let center = UNUserNotificationCenter.current() center.add(request) }

試したこと

最初に試した頃、「繰り返し通知する場合は60秒以上開けてください」のようなログがあったので、調べたところ、
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
のrepeatsの所がtrueになっていたので、falseにした所、「繰り返し通知する場合は60秒以上開けてください」のようなエラーのログがなくなったのですが、
通知が出なくなってしまいました。解決方法を調べていますが、今現在解決していません。
初心者なので質問の情報に至らない点がある場合があるかと思います。すみません。もし至らない点があれば迅速に情報を追加します。
よろしくお願いします。

補足情報(FW/ツールのバージョンなど)

Swift4です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

通知が受け取れないのはアプリケーションがフォアグラウンドの時でしょうか?
フォアグランドで通知を受け取りたい場合はUNUserNotificationCenterDelegateのメソッドを使用してハンドリングする必要があります。

参考:https://qiita.com/mshrwtnb/items/3135e931eedc97479bb5

投稿2018/08/31 15:55

Tomochika_Tomo

総合スコア166

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

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

hik_

2018/09/01 12:56

ご回答ありがとうございます。ハンドリングを調べて実装してみたのですがやはり通知がされないのですが、コードに何か不備はありますでしょうか? import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in if granted { print("許可されました") } else { print("許可されませんでした") } } return true } func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) { let identifer = notification.request.identifier switch identifer { case "alert": completionHandler([.alert]) case "both": completionHandler([.sound, .alert]) default: () } }
Tomochika_Tomo

2018/09/02 09:52

参考として記載したサイトの情報をもう少しちゃんと読んで見ましょう! 少なくとも以下のことをやっていないと思います。 ・UNUserNotificationCenterDelegateプロトコルの継承 ・処理の委譲先の設定。(center.delegate = self) それと参考のサイトでは、「willPresent notification」の処理でidentiferを見て処理を分岐していますが、hik_様の実装の中でidentiferを設定していないならば、switch文は削除しちゃって、completionHandler([.sound, .alert])だけ書いとけば動くと思います!
hik_

2018/09/05 05:42

ご回答ありがとうございます。プログラミングを勉強し始めたばかりなのでまだまだ分からない事が多いですが、時間はかかると思いますが回答を元に色々解決へ試していこうと思います。 ありがとうござます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問