로컬 알림 구현 방법

이번에는 현지 통지의 실시에 대해 작성한다.

로컬 알림


사과공식 문서 (일본어)에는 다음과 같은 내용이 적혀 있다.
로컬 알림과 원격 알림을 통칭하여 사용자 알림이라고 합니다...프론트에서 실행되지 않는 프로그램은 사용자에게 어떤 정보를 전달하는 데 사용됩니다.
로컬 알림이든 원격 알림이든 외관과 소리는 같다.이 알림은 경고 메시지나 응용 프로그램 아이콘의 휘장을 표시할 수 있습니다.
즉, 이것은 응용 프로그램을 사용하지 않은 사용자에게도 어떤 요구를 할 수 있는 기능이다.
사용자가 응용 프로그램을 사용하지 않았을 때 사용자에게 임의의 메시지를 보낼 수 있기 때문에 응용 프로그램의 보존율 개선, 활성 사용자 수 개선 등에 기여하는 기능이라고 할 수 있다.

완성


실시 중에 설치된 것은 여기다.

로컬 알림 표시 기준


로컬 알림을 출력할 수 있는 여러 조건이 있습니다.
  • 등록 통지 시점을 기점으로 임의의 시간을 거친 후 통지
  • 달력에 대한 임의의 날짜와 시간 알림
  • 현재 위치와 위치 정보(Location)가 일치하는 경우 알림
  • 구현 방법

  • 사용자에게 알림 표시 라이센스
  • 트리거 설정
  • 알림의 표시 내용 설정
  • 등록 알림
  • 1. 사용자에게 알림 표시 라이센스 부여


    먼저 사용자에게 알림을 표시하기 위해서는 로컬 알림이든 푸시 알림이든 사용자로부터 알림을 표시하는 허가를 받아야 한다.
    새 프로그램을 설치할 때 보이는 대화상자가 있습니다. 바로 그 通知表示の許諾をユーザーから得る 대화상자입니다.

    대화 상자가 표시되면 APNs(Apple Push Notification Service) 터미널 정보가 등록됩니다.
    언제든지 다음 코드를 실행하여 대화상자를 표시할 수 있습니다.
    if #available(iOS 10.0, *) {
        // iOS 10
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.badge, .sound, .alert], completionHandler: { (granted, error) in
            if error != nil {
                return
            }
    
            if granted {
                print("通知許可")
    
                let center = UNUserNotificationCenter.current()
                center.delegate = self
    
            } else {
                print("通知拒否")
            }
        })
    
    } else {
        // iOS 9以下
        let settings = UIUserNotificationSettings(types: [.badge, .sound, .alert], categories: nil)
        UIApplication.shared.registerUserNotificationSettings(settings)
    }
    
    또한 개인적인 의견이지만 응용 프로그램이 처음 시작될 때(예: (_application:didFinishLaunchingWithOptions:) 이 알림 허가 대화상자를 표시하면 알림의 허가율이 낮아질 수 있습니다.
    최근 알림을 표시하는 응용 프로그램이 많아지고 알림을 거부하는 사용자도 증가하고 있기 때문에 사용자가 왜 알림을 받아야 하는지 명확하지 않기 때문에 먼저 알림을 닫는 경향이 있다.
    이런 상황을 피하기 위해 대화상자를 표시할 때 추천하는 시기는
  • 애플리케이션 기능을 한 번 사용한 후
  • 응용 프로그램에서 사용자가 목표를 달성한 후
  • 이 응용 프로그램에서 알림이 무엇인지 설명한 후
  • 예를 들다.
    1과 2는 응용 프로그램에 대한 관심이 높아지는 시기이다. 3은 원래 사용자에게 알림을 명시한 내용을 통해 알림을 받는 등 (최근 이 대화상자를 표시하기 전에 자신의 대화상자를 표시하는 응용 프로그램도 증가하고 있다)
    여러분이 설치할 때 이 디스플레이 시기를 꼭 고려해 주십시오.

    2. 트리거 설정


    ローカル通知を表示させる際の条件에도 적힌 조건마다 트리거를 설정합니다.
    // 設定に必要なクラスをインスタンス化
    var notificationTime = DateComponents()
    let trigger: UNNotificationTrigger
    
    // 12時に通知する場合
    notificationTime.hour = 12
    notificationTime.minute = 0
    trigger = UNCalendarNotificationTrigger(dateMatching: notificationTime, repeats: false)
    
    /*その他の設定*/
    
    // 設定したタイミングを起点として1分後に通知したい場合
    trigger = UNTimeIntervalNotificationTrigger(timeInterval: 60, repeats: false)
    
    이때 UNCalendarNotificationTrigger(repeats:) 매개변수를 true 로 설정하면 지정된 조건을 충족할 때마다 공지가 수행되고 false 로 설정하면 한 번만 공지가 수행됩니다.

    3. 알림의 표시 내용에 대한 설정


    그리고 알림을 결정하는 표시 내용을 설정합니다.
    // UNMutableNotificationContentクラスをインスタンス化
    let content = UNMutableNotificationContent()
    
    // 通知のメッセージセット
    content.title = ""
    content.body = "食事の時間になりました!"
    content.sound = UNNotificationSound.default()
    
    이때 .title.sound 은 임의의 것이므로 설정할 필요가 없지만 .body 은 필수 항목이므로 문자열의 지정이 없으면 원래 정보가 표시되지 않습니다. 주의하십시오.

    4. 등록 알림


    마지막으로 이전에 설정한 내용을 등록하여 UNUserNotificationCenter 에 추가합니다.
    // 通知スタイルを指定
    let request = UNNotificationRequest(identifier: "uuid", content: content, trigger: trigger)
    
    // 通知をセット
    UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
    
    이 처리는 응용 프로그램이 백그라운드로 이동할 때 등록하려고 하기 때문에 applicationDidEnterBackground(_ application:) 내에 실시됩니다.
    AppDelegate.swift
    func applicationDidEnterBackground(_ application: UIApplication) {
    
        // 通知設定に必要なクラスをインスタンス化
        let trigger: UNNotificationTrigger
        let content = UNMutableNotificationContent()
        var notificationTime = DateComponents()
    
        // トリガー設定
        notificationTime.hour = 12
        notificationTime.minute = 0
        trigger = UNCalendarNotificationTrigger(dateMatching: notificationTime, repeats: false)
    
        // 通知内容の設定
        content.title = ""
        content.body = "食事の時間になりました!"
        content.sound = UNNotificationSound.default()
    
        // 通知スタイルを指定
        let request = UNNotificationRequest(identifier: "uuid", content: content, trigger: trigger)
        // 通知をセット
        UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
    
    }
    
    이렇게 하면 프로그램을 한 번 시작한 후에 백그라운드로 옮겨서 알림을 표시할 수 있다.
    한편 이번 설치는 아래 내용을 참고했다.
    간단하고 알기 쉬운 기사 감사합니다 m(__)m
    [iOS10] 사용자 공지 프레임워크에서 알림 사용자 정의
    [Swift3.0] 로컬 알림을 먼저 엽니다.

    좋은 웹페이지 즐겨찾기