読者です 読者をやめる 読者になる 読者になる

Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #292】 iOS10 User Notification frameworkを使ってローカル通知を送信する

はじめに

iOS10になって、通知の実装が刷新された。
簡単なローカル通知を送信する処理を実装して、基礎を学ぶ。

この記事を読んでわかること

  • ローカル通知送信方法

実装

通知の送信にはiOS10で追加された、UserNotificationFrameworkを使う。
UserNotificationFrameworkを使って下記2つのことを行うことで、
通知を送信できるようになる。

  • 通知送信許可の取得
  • 通知のリクエスト

通知送信許可の取得

UNUserNotificationCenterクラスのcurrentメソッドを使うと、
シングルトンインスタンスを取得できる。

requestAuthorizationメソッドを実行すると、
通知送信許可に関する確認画面が画面に表示される。
許可 or 拒否をブロック変数で取得することができる。

UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .alert, .sound]){
    granted, errror in
    
    if granted{
        print("notification permission granted")
    }else{
        print("notification permission denied")
    }
}

通知送信許可に関する確認画面 f:id:fjswkun:20161128222419p:plain

通知のリクエスト

下記4つのことを行う。 - 通知内容の作成 - トリガーの作成 - リクエストの作成 - リクエストの実行

// 通知内容の作成
let contents = UNMutableNotificationContent()
contents.title = "This is title."
contents.subtitle = "This is subtitle."
contents.body = "This is body. \nHello world!"

// トリガーの作成(5秒後に通知実行)
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10.0, repeats: false)

// リクエストの作成
let identifier = NSUUID().uuidString
let request = UNNotificationRequest(identifier: identifier, content: contents, trigger: trigger)

// リクエスト実行
UNUserNotificationCenter.current().add(request){
    error in print(error?.localizedDescription)
}

通知送信許可を取得した後、「通知実行」ボタンを押す。
すぐにホーム画面に戻り、5秒待つ。
すると、下記の通知が表示される。

f:id:fjswkun:20161128224500p:plain

f:id:fjswkun:20161128224510p:plain

import UIKit
import UserNotifications

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let button = UIButton(type: .system)
        button.setTitle("通知追加", for: .normal)
        button.sizeToFit()
        button.center = view.center
        button.addTarget(self, action: #selector(addNotification), for: .touchUpInside)
        view.addSubview(button)
        
        // 通知許可の取得
        requestPermission()
    }
    
    func addNotification(){
        // コンテンツの作成
        let contents = UNMutableNotificationContent()
        contents.title = "This is title."
        contents.subtitle = "This is subtitle."
        contents.body = "This is body. \nHello world!"
        
        // トリガーの作成(5秒後に通知実行)
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 10.0, repeats: false)
        
        // リクエストの作成
        let identifier = NSUUID().uuidString
        let request = UNNotificationRequest(identifier: identifier, content: contents, trigger: trigger)
        
        // リクエスト実行
        UNUserNotificationCenter.current().add(request){
            error in print(error?.localizedDescription)
        }
    }

    private func requestPermission(){
        UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .alert, .sound]){
            granted, errror in
            
            if granted{
                print("notification permission granted")
            }else{
                print("notification permission denied")
            }
        }
    }
}

サンプルのダウンロード

こちらからダウンロード。
SampleLocalNotification.zip - Google ドライブ

参考情報

Swift

iOSアプリ開発未経験の人向け
・Swift初心者の人に評判が良いようですね


・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】


②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾


③中級者、上級者向け

詳解 Swift

詳解 Swift

詳解 Swift 改訂版

詳解 Swift 改訂版