다음을 통해 공유


Xamarin.iOS의 대화형 알림 사용자 인터페이스

iOS 10에 도입된 알림 콘텐츠 확장을 사용하면 알림에 대한 사용자 지정 사용자 인터페이스를 만들 수 있습니다. iOS 12부터 알림 사용자 인터페이스에는 단추 및 슬라이더와 같은 대화형 요소가 포함될 수 있습니다.

알림 콘텐츠 확장 프로그램 Info.plist 파일

샘플 앱에서 RedGreenNotificationsContentExtension 프로젝트의 Info.plist 파일에는 다음 구성이 포함됩니다.

<!-- ... -->
<key>NSExtension</key>
<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>UNNotificationExtensionCategory</key>
        <array>
            <string>red-category</string>
            <string>green-category</string>
        </array>
        <key>UNNotificationExtensionUserInteractionEnabled</key>
        <true/>
        <key>UNNotificationExtensionDefaultContentHidden</key>
        <true/>
        <key>UNNotificationExtensionInitialContentSizeRatio</key>
        <real>0.6</real>
    </dict>
    <key>NSExtensionMainStoryboard</key>
    <string>MainInterface</string>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.usernotifications.content-extension</string>
    <key></key>
    <true/>
</dict>
<!-- ... -->

다음 기능을 참고하세요.

  • 배열은 UNNotificationExtensionCategory 콘텐츠 확장에서 처리하는 알림 범주의 유형을 지정합니다.
  • 대화형 콘텐츠를 지원하기 위해 알림 콘텐츠 확장은 키를 .로 true설정합니다UNNotificationExtensionUserInteractionEnabled.
  • 키는 UNNotificationExtensionInitialContentSizeRatio 콘텐츠 확장의 인터페이스에 대한 초기 높이/너비 비율을 지정합니다.

대화형 인터페이스

알림 콘텐츠 확장의 인터페이스를 정의하는 MainInterface.storyboard는 단일 보기 컨트롤러를 포함하는 표준 스토리보드입니다. 샘플 앱에서 뷰 컨트롤러는 형식 NotificationViewController이며 이미지 보기, 세 개의 단추 및 슬라이더를 포함합니다. 스토리보드는 이러한 컨트롤을 NotificationViewController.cs 정의된 처리기와 연결합니다.

  • 앱 시작 단추 처리기는 앱을 시작하는 작업 메서드ExtensionContext를 호출 PerformNotificationDefaultAction 합니다.

    partial void HandleLaunchAppButtonTap(UIButton sender)
    {
        ExtensionContext.PerformNotificationDefaultAction();
    }
    

    앱에서 사용자 알림 센터의 Delegate (샘플 앱 AppDelegate에서)는 메서드의 상호 작용에 DidReceiveNotificationResponse 응답할 수 있습니다.

    [Export("userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:")]
    public void DidReceiveNotificationResponse(UNUserNotificationCenter center, UNNotificationResponse response, System.Action completionHandler)
    {
        if (response.IsDefaultAction)
        {
            Console.WriteLine("ACTION: Default");
            // ...
    
  • 알림 해제 단추 처리기가 호출 DismissNotificationContentExtensionExtensionContext되어 알림을 닫습니다.

    partial void HandleDismissNotificationButtonTap(UIButton sender)
    {
        ExtensionContext.DismissNotificationContentExtension();
    }
    
  • 알림 제거 단추 처리기는 알림을 해제하고 알림 센터에서 제거합니다.

    partial void HandleRemoveNotificationButtonTap(UIButton sender)
    {
        ExtensionContext.DismissNotificationContentExtension();
        UNUserNotificationCenter.Current.RemoveDeliveredNotifications(new string[] { notification.Request.Identifier });
    }
    
  • 슬라이더의 값 변경 내용을 처리하는 메서드는 알림 인터페이스에 표시되는 이미지의 알파를 업데이트합니다.

    partial void HandleSliderValueChanged(UISlider sender)
    {
        Xamagon.Alpha = sender.Value;
    }