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"); // ...
알림 해제 단추 처리기가 호출
DismissNotificationContentExtension
ExtensionContext
되어 알림을 닫습니다.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; }