SlideShare a Scribd company logo
1 of 15
Download to read offline
ローカル通知の処理を
バックグラウンドに対応してみた
@nekokichi1_yos2
自己紹介
•Nekokichi(@nekokichi1_yos2)
•エンジニア就活してます
•初めてのLT
ローカル通知とは
• デバイス上で完結
• 似たもので、プッシュ通知
• トリガー(○秒後、日付、位置情報)
func setupUNNotification() {
// 通知内容
let content = UNMutableNotificationContent()
content.sound = .default
content.title = "通知を受信"
content.body = "f2fwegewgewgewgewg"
// 3秒後に通知
let timeIntervalTrigger = UNTimeIntervalNotificationTrigger(timeInterval: 3, repeats: false)
// 通知のリクエスト
let request = UNNotificationRequest(identifier: UNNotificationValues.localNotificationIdentifier, content: content,
trigger: timeIntervalTrigger)
// 通知を登録
let center = UNUserNotificationCenter.current()
center.add(request) { (error: Error?) in
if let error = error {
print(error.localizedDescription)
}
}
}
ローカル通知の作成
extension AppDelegate: UNUserNotificationCenterDelegate {
// アプリ上(フォアグラウンド)で通知を受信した場合
func userNotificationCenter(
_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {}
// 通知をタップした場合
func userNotificationCenter(
_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {}
}
ローカル通知のメソッド
まだ不十分
問題のシーン
何が問題か?
アプリを開く 通知の処理
通知の
デリゲートメソッド
通知の処理
❓
手順
• アプリ起動を検知
• 通知を取得したかをチェック
func sceneDidBecomeActive(_ scene: UIScene) {
// 通知された通知を全て取得
// notifications:[UNNotification]
UNUserNotificationCenter.current().getDeliveredNotifications { (notifications) in
if !notifications.isEmpty {
for notification in notifications {
// ローカル通知のプロパティを取り出せる
print(notification.request.identifier)
print(notification.request.content.title)
print(notification.request.content.body)
}
}
// 受信処理が完了したので削除
UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers:
["ローカル通知のidenfier"])
}
}
func sceneWillEnterForeground(_ scene: UIScene) {
// 通知された通知を全て取得
// notifications:[UNNotification]
UNUserNotificationCenter.current().getDeliveredNotifications { (notifications) in
if !notifications.isEmpty {
for notification in notifications {
// ローカル通知のプロパティを取り出せる
print(notification.request.identifier)
print(notification.request.content.title)
print(notification.request.content.body)
}
}
// 受信処理が完了したので削除
UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers:
["ローカル通知のidenfier"])
}
}
役立つ場面
•アラートを表示
•イベント通知で別ファイルの処理
まとめ
• ローカル通知をバックグラウンドに対応
• sceneDelegateのメソッドでアプリの起動を検知
• getDeliveredNotifications()で受信された通知を取得
Qiita ブログ
Twitter
フォローよろしくお願いします
ご清聴、ありがとうございました

More Related Content

What's hot

Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書くmametter
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0Masakazu Matsushita
 
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -Naoki Nagazumi
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1Changhwan Lee
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)NTT DATA Technology & Innovation
 
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Samir Hammoudi
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Hiroyuki Wada
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話Yoshitaka Kawashima
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと土岐 孝平
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみたy-uti
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~Juniper Networks (日本)
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)fisuda
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 

What's hot (20)

Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Ruby で高速なプログラムを書く
Ruby で高速なプログラムを書くRuby で高速なプログラムを書く
Ruby で高速なプログラムを書く
 
いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0いつやるの?Git入門 v1.1.0
いつやるの?Git入門 v1.1.0
 
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
 
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
アプリ開発で知っておきたい認証技術 - OAuth 1.0 + OAuth 2.0 + OpenID Connect -
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1ScyllaDBユーザー勉強会 #1
ScyllaDBユーザー勉強会 #1
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
 
systemd 再入門
systemd 再入門systemd 再入門
systemd 再入門
 
Keycloak & midPoint の紹介
Keycloak & midPoint の紹介Keycloak & midPoint の紹介
Keycloak & midPoint の紹介
 
強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話強いて言えば「集約どう実装するのかな、を考える」な話
強いて言えば「集約どう実装するのかな、を考える」な話
 
これからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきことこれからSpringを使う開発者が知っておくべきこと
これからSpringを使う開発者が知っておくべきこと
 
JIT のコードを読んでみた
JIT のコードを読んでみたJIT のコードを読んでみた
JIT のコードを読んでみた
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
 
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 2.3.0対応)
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 

【Swift】ローカル通知のバックグラウンド対応