Android의 로컬 알림Local notifications on Android

이 섹션 Xamarin. Android에서 로컬 알림을 구현 하는 방법을 보여 줍니다. Android 알림의 다양 한 UI 요소에 대해 설명 하 고 알림을 만들고 표시 하는 것과 관련 된 API에 대해 설명 합니다.This section shows how to implement local notifications in Xamarin.Android. It explains the various UI elements of an Android notification and discusses the API's involved with creating and displaying a notification.

로컬 알림 개요Local notifications overview

Android는 알림 아이콘과 알림 정보를 사용자에 게 표시 하는 두 가지 시스템 제어 영역을 제공 합니다.Android provides two system-controlled areas for displaying notification icons and notification information to the user. 알림이 처음 게시 되 면 다음 스크린샷에 표시 된 것 처럼 해당 아이콘이 알림 영역에 표시 됩니다.When a notification is first published, its icon is displayed in the notification area, as shown in the following screenshot:

장치의 예제 알림 영역

알림에 대 한 세부 정보를 얻기 위해 사용자는 알림 서랍 (각 알림 아이콘을 확장 하 여 알림 콘텐츠 표시)을 열고 알림과 관련 된 모든 작업을 수행할 수 있습니다.To obtain details about the notification, the user can open the notification drawer (which expands each notification icon to reveal notification content) and perform any actions associated with the notifications. 다음 스크린샷은 위에 표시 된 알림 영역에 해당 하는 알림 서랍 을 보여 줍니다.The following screenshot shows a notification drawer that corresponds to the notification area displayed above:

알림 서랍 세 개를 표시 하는예제 알림 서랍Example notification drawer displaying three notifications

Android 알림은 다음과 같은 두 가지 유형의 레이아웃을 사용 합니다.Android notifications use two types of layouts:

  • 기본 레이아웃 – 간단 하 고 고정 된 프레젠테이션 형식입니다.Base layout – a compact, fixed presentation format.

  • 확장 된 레이아웃 – 자세한 정보를 표시 하기 위해 더 큰 크기로 확장할 수 있는 프레젠테이션 형식입니다.Expanded layout – a presentation format that can expand to a larger size to reveal more information.

다음 섹션에서는 이러한 각 레이아웃 유형과 이러한 레이아웃을 만드는 방법에 대해 설명 합니다.Each of these layout types (and how to create them) is explained in the following sections.

참고

이 가이드에서는 Android 지원 라이브러리notificationcompat api 에 대해 집중적으로 설명 합니다.This guide focuses on the NotificationCompat APIs from the Android support library. 이러한 Api는 Android 4.0 (API 수준 14)에 대 한 최대 이전 버전과의 호환성을 보장 합니다.These APIs will ensure maximum backwards compatibility to Android 4.0 (API level 14).

기본 레이아웃Base layout

모든 Android 알림은 기본 레이아웃 형식으로 빌드됩니다. 여기에는 최소한 다음 요소가 포함 됩니다.All Android notifications are built on the base layout format, which, at a minimum, includes the following elements:

  1. 원본 앱을 나타내는 알림 아이콘또는 앱에서 다양 한 유형의 알림을 지 원하는 경우 알림 유형입니다.A notification icon, which represents the originating app, or the notification type if the app supports different types of notifications.

  2. 알림 제목또는 알림이 개인 메시지 인 경우 보낸 사람의 이름입니다.The notification title, or the name of the sender if the notification is a personal message.

  3. 알림 메시지입니다.The notification message.

  4. 타임 스탬프입니다.A timestamp.

이러한 요소는 다음 다이어그램에 나와 있는 것 처럼 표시 됩니다.These elements are displayed as illustrated in the following diagram:

알림 요소의위치Location of notification elements

기본 레이아웃은 높이의 64 dp (밀도 독립적 픽셀)로 제한 됩니다.Base layouts are limited to 64 density-independent pixels (dp) in height. Android는 기본적으로이 기본 알림 스타일을 만듭니다.Android creates this basic notification style by default.

필요에 따라 알림은 응용 프로그램 또는 보낸 사람의 사진을 나타내는 커다란 아이콘을 표시할 수 있습니다.Optionally, notifications can display a large icon that represents the application or the sender's photo. Android 5.0 이상에서 알림에 작은 아이콘을 사용 하는 경우 작은 알림 아이콘이 크게 아이콘 위에 배지로 표시 됩니다.When a large icon is used in a notification in Android 5.0 and later, the small notification icon is displayed as a badge over the large icon:

간단한 알림 사진

Android 5.0부터 알림은 잠금 화면에도 표시 될 수 있습니다.Beginning with Android 5.0, notifications can also appear on the lock screen:

예 화면 잠금 알림Example lock screen notification

사용자는 잠금 화면 알림을 두 번 탭 하 여 장치의 잠금을 해제 하 고 해당 알림을 시작한 앱으로 이동 하거나, 살짝 밀어 알림을 해제할 수 있습니다.The user can double-tap the lock screen notification to unlock the device and jump to the app that originated that notification, or swipe to dismiss the notification. 앱은 알림 표시 수준을 설정 하 여 잠금 화면에 표시 되는 항목을 제어 하 고, 사용자는 중요 한 콘텐츠를 화면 잠금 알림에 표시 하도록 허용할지 여부를 선택할 수 있습니다.Apps can set the visibility level of a notification to control what is shown on the lock screen, and users can choose whether to allow sensitive content to be shown in lock screen notifications.

Android 5.0에는 우선 순위가 높은 알림 프레젠테이션 형식이 도입 되었습니다.Android 5.0 introduced a high-priority notification presentation format called Heads-up. 준비 알림은 몇 초 동안 화면 맨 위에서 아래로 이동 하 고 알림 영역에 다시 돌아갑니다.Heads-up notifications slide down from the top of the screen for a few seconds and then retreat back up to the notification area:

예제 준비 알림Example heads-up notification

알림 메시지를 통해 시스템 UI는 현재 실행 중인 작업의 상태를 방해 하지 않고 사용자 앞에 중요 한 정보를 넣을 수 있습니다.Heads-up notifications make it possible for the system UI to put important information in front of the user without disrupting the state of the currently running activity.

Android에는 알림을 지능적으로 정렬 하 고 표시할 수 있도록 알림 메타 데이터에 대 한 지원이 포함 되어 있습니다.Android includes support for notification metadata so that notifications can be sorted and displayed intelligently. 알림 메타 데이터는 또한 잠금 화면 및 준비 형식에 알림이 표시 되는 방식을 제어 합니다.Notification metadata also controls how notifications are presented on the lock screen and in Heads-up format. 응용 프로그램은 다음과 같은 유형의 알림 메타 데이터를 설정할 수 있습니다.Applications can set the following types of notification metadata:

  • 우선 순위 – 우선 순위 수준에 따라 알림이 표시 되는 방법과 시기가 결정 됩니다.Priority – The priority level determines how and when notifications are presented. 예를 들어 Android 5.0에서는 우선 순위가 높은 알림이 준비 알림으로 표시 됩니다.For example, In Android 5.0, high-priority notifications are displayed as Heads-up notifications.

  • 표시 유형 – 잠금 화면에 알림이 표시 될 때 표시 되는 알림 콘텐츠의 양을 지정 합니다.Visibility – Specifies how much notification content is to be displayed when the notification appears on the lock screen.

  • 범주 –는 장치가 방해 금지 모드에 있는 경우와 같이 다양 한 상황에서 알림을 처리 하는 방법을 시스템에 알려 줍니다.Category – Informs the system how to handle the notification in various circumstances, such as when the device is in Do Not Disturb mode.

참고

표시 유형범주 는 android 5.0에서 도입 되었으며 이전 버전의 android에서 사용할 수 없습니다.Visibility and Category were introduced in Android 5.0 and are not available in earlier versions of Android. Android 8.0부터 알림 채널 은 사용자에 게 알림이 표시 되는 방식을 제어 하는 데 사용 됩니다.Beginning with Android 8.0, notification channels are used to control how notifications are presented to the user.

확장 된 레이아웃Expanded layouts

Android 4.1 부터는 사용자가 알림의 높이를 확장 하 여 더 많은 콘텐츠를 볼 수 있도록 하는 확장 된 레이아웃 스타일로 알림을 구성할 수 있습니다.Beginning with Android 4.1, notifications can be configured with expanded layout styles that allow the user to expand the height of the notification to view more content. 예를 들어 다음 예제에서는 계약 된 모드에서 확장 된 레이아웃 알림을 보여 줍니다.For example, the following example illustrates an expanded layout notification in contracted mode:

계약 알림

이 알림이 확장 되 면 전체 메시지를 표시 합니다.When this notification is expanded, it reveals the entire message:

확장 된 알림

Android는 단일 이벤트 알림에 대해 3 가지 확장 된 레이아웃 스타일을 지원 합니다.Android supports three expanded layout styles for single-event notifications:

  • 계약 된 모드의 빅 텍스트 – 메시지의 첫 번째 줄에 두 개의 마침표가 있는 발췌를 표시 합니다.Big Text – In contracted mode, displays an excerpt of the first line of the message followed by two periods. 확장 모드에서는 전체 메시지를 표시 합니다 (위 예제에 표시 된 대로).In expanded mode, displays the entire message (as seen in the above example).

  • 받은 편지함 – 계약 된 모드에서 새 메시지 수를 표시 합니다.Inbox – In contracted mode, displays the number of new messages. 확장 된 모드에서 첫 번째 전자 메일 메시지 또는 수신함의 메시지 목록을 표시 합니다.In expanded mode, displays the first email message or a list of the messages in the inbox.

  • 이미지 –는 계약 된 모드에서 메시지 텍스트를 표시 합니다.Image – In contracted mode, displays only the message text. 확장 모드에서 텍스트와 이미지를 표시 합니다.In expanded mode, displays the text and an image.

이 문서의 뒷부분에 나오는 기본 알림 외 에도 빅 텍스트, 수신함이미지 알림을 만드는 방법을 설명 합니다.Beyond the Basic Notification (later in this article) explains how to create Big Text, Inbox, and Image notifications.

알림 채널Notification channels

Android 8.0 (Oreo)부터 알림 채널 기능을 사용 하 여 표시 하려는 각 알림 유형에 대 한 사용자 지정 가능한 채널을 만들 수 있습니다.Beginning with Android 8.0 (Oreo), you can use the notification channels feature to create a user-customizable channel for each type of notification that you want to display. 알림 채널을 사용 하면 채널에 게시 된 모든 알림이 동일한 동작을 나타내도록 알림을 그룹화 할 수 있습니다.Notification channels make it possible for you to group notifications so that all notifications posted to a channel exhibit the same behavior. 예를 들어 즉각적인 주의가 필요한 알림과 정보 메시지에 사용 되는 별도의 "조용한" 채널을 위한 알림 채널이 있을 수 있습니다.For example, you might have a notification channel that is intended for notifications that require immediate attention, and a separate "quieter" channel that is used for informational messages.

Android Oreo와 함께 설치 되는 YouTube 앱은 다음과 같은 두 가지 알림 범주를 나열 합니다. 알림일반 알림다운로드:The YouTube app that is installed with Android Oreo lists two notification categories: Download notifications and General notifications:

Android Oreo의 YouTube알림 화면Notification screens for YouTube in Android Oreo

이러한 각 범주는 알림 채널에 해당 합니다.Each of these categories corresponds to a notification channel. YouTube 앱은 다운로드 알림 채널 및 일반 알림 채널을 구현 합니다.The YouTube app implements a Download Notifications channel and a General Notifications channel. 사용자는 앱의 다운로드 알림 채널에 대 한 설정 화면을 표시 하는 다운로드 알림을 탭 할 수 있습니다.The user can tap Download notifications, which displays the settings screen for the app's download notifications channel:

YouTube 앱에 대 한알림 화면 다운로드Download notifications screen for the YouTube app

이 화면에서 사용자는 다음을 수행 하 여 다운로드 알림 채널의 동작을 수정할 수 있습니다.In this screen, the user can modify the behavior of the Download notifications channel by doing the following:

  • 중요도 수준을 긴급, 높음, 중간또는 낮음으로 설정 하 여 사운드 및 시각적 중단의 수준을 구성 합니다.Set the Importance level to Urgent, High, Medium, or Low, which configures the level of sound and visual interruption.

  • 알림 점을 설정 하거나 해제 합니다.Turn the notification dot on or off.

  • 깜박이는 조명을 설정 하거나 해제 합니다.Turn the blinking light on or off.

  • 잠금 화면에 알림을 표시 하거나 숨깁니다.Show or hide notifications on the lock screen.

  • 방해 금지 설정을 재정의 합니다.Override the Do Not Disturb setting.

일반 알림 채널의 설정은 다음과 유사 합니다.The General Notifications channel has similar settings:

YouTube 앱에 대 한일반 알림 화면General notifications screen for the YouTube app

알림 채널이 사용자와 상호 작용 하는 방식에 대 한 절대 제어 권한이 없습니다. 사용자는 위의 스크린샷에 표시 된 대로 장치에서 알림 채널에 대 한 설정을 수정할 수 –.Notice that you do not have absolute control over how your notification channels interact with the user – the user can modify the settings for any notification channel on the device as seen in the screenshots above. 그러나 아래에 설명 된 대로 기본값을 구성할 수 있습니다.However, you can configure default values (as will be described below). 이 예제에서 설명 하는 것 처럼 새 알림 채널 기능을 사용 하면 다양 한 종류의 알림을 사용자에 게 세분화 하 여 제어할 수 있습니다.As these examples illustrate, the new notification channels feature makes it possible for you to give users fine-grained control over different kinds of notifications.

알림 만들기Notification creation

Android에서 알림을 만들려면 Xamarin.Android.Support.v4 Nuget.exe NuGet 패키지에서 Notificationcompat.Builder 클래스를 사용 합니다.To create a notification in Android, you use the NotificationCompat.Builder class from the Xamarin.Android.Support.v4 NuGet package. 이 클래스를 사용 하면 이전 버전의 Android에서 알림을 만들고 게시할 수 있습니다.This class makes it possible to create and publish notifications on older versions of Android. NotificationCompat.Builder에 대해서도 설명 합니다.NotificationCompat.Builder is also discussed.

NotificationCompat.Builder은 다음과 같이 알림의 다양 한 옵션을 설정 하는 메서드를 제공 합니다.NotificationCompat.Builder provides methods for setting the various options in a notification, such as:

  • 제목, 메시지 텍스트 및 알림 아이콘이 포함 된 콘텐츠입니다.The content, including the title, the message text, and the notification icon.

  • 큰 텍스트, 수신함또는 이미지 스타일과 같은 알림 스타일입니다.The style of the notification, such as Big Text, Inbox, or Image style.

  • 알림의 우선 순위는 minimum, low, default, high 또는 maximum입니다.The priority of the notification: minimum, low, default, high, or maximum. Android 8.0 이상에서 우선 순위는 알림 채널을 통해 설정 됩니다.On Android 8.0 and higher, the priority is set via a notification channel.

  • 잠금 화면에 표시 되는 알림 (공개, 개인 또는 암호)입니다.The visibility of the notification on the lock screen: public, private, or secret.

  • Android에서 알림을 분류 하 고 필터링 하는 데 도움이 되는 범주 메타 데이터입니다.Category metadata that helps Android classify and filter the notification.

  • 알림을 누를 때 시작할 활동을 나타내는 선택적 의도입니다.An optional intent that indicates an activity to launch when the notification is tapped.

  • 알림이 게시 될 알림 채널의 ID입니다 (Android 8.0 이상).The ID of the notification channel that the notification will be published on (Android 8.0 and higher).

작성기에서 이러한 옵션을 설정한 후에는 설정을 포함 하는 알림 개체를 생성 합니다.After you set these options in the builder, you generate a notification object that contains the settings. 알림을 게시 하려면이 알림 개체를 알림 관리자에 게 전달 합니다.To publish the notification, you pass this notification object to the Notification Manager. Android는 알림 게시 및 사용자에 게 표시를 담당 하는 Notificationmanager 클래스를 제공 합니다.Android provides the NotificationManager class, which is responsible for publishing notifications and displaying them to the user. 활동 또는 서비스와 같은 모든 컨텍스트에서이 클래스에 대 한 참조를 가져올 수 있습니다.A reference to this class can be obtained from any context, such as an activity or a service.

알림 채널 만들기Creating a notification channel

Android 8.0에서 실행 되는 앱은 알림에 대 한 알림 채널을 만들어야 합니다.Apps that are running on Android 8.0 must create a notification channel for their notifications. 알림 채널에는 다음과 같은 세 가지 정보가 필요 합니다.A notification channel requires the following three pieces of information:

  • 채널을 식별 하는 패키지에 고유한 ID 문자열입니다.An ID string that is unique to the package that will identify the channel.
  • 사용자에 게 표시 되는 채널의 이름입니다.The name of the channel that will be displayed to the user. 이름은 1 ~ 007e; 40 자 사이 여야 합니다.The name must be between one and 40 characters.
  • 채널의 중요도입니다.The importance of the channel.

앱은 실행 중인 Android 버전을 확인 해야 합니다.Apps will need to check the version of Android that they are running. Android 8.0 이전 버전을 실행 하는 장치는 알림 채널을 만들 수 없습니다.Devices running versions older than Android 8.0 should not create a notification channel. 다음 메서드는 활동에서 알림 채널을 만드는 방법에 대 한 한 가지 예입니다.The following method is one example of how to create a notification channel in an activity:

void CreateNotificationChannel()
{
    if (Build.VERSION.SdkInt < BuildVersionCodes.O)
    {
        // Notification channels are new in API 26 (and not a part of the
        // support library). There is no need to create a notification
        // channel on older versions of Android.
        return;
    }

    var channelName = Resources.GetString(Resource.String.channel_name);
    var channelDescription = GetString(Resource.String.channel_description);
    var channel = new NotificationChannel(CHANNEL_ID, channelName, NotificationImportance.Default)
                  {
                      Description = channelDescription
                  };

    var notificationManager = (NotificationManager) GetSystemService(NotificationService);
    notificationManager.CreateNotificationChannel(channel);
}

활동을 만들 때마다 알림 채널을 만들어야 합니다.The notification channel should be created each time the activity is created. CreateNotificationChannel 메서드의 경우 활동의 OnCreate 메서드에서 호출 해야 합니다.For the CreateNotificationChannel method, it should be called in the OnCreate method of an activity.

알림 만들기 및 게시Creating and publishing a notification

Android에서 알림을 생성 하려면 다음 단계를 수행 합니다.To generate a notification in Android, follow these steps:

  1. NotificationCompat.Builder 개체를 인스턴스화합니다.Instantiate a NotificationCompat.Builder object.

  2. NotificationCompat.Builder 개체의 다양 한 메서드를 호출 하 여 알림 옵션을 설정 합니다.Call various methods on the NotificationCompat.Builder object to set notification options.

  3. NotificationCompat.Builder 개체의 빌드 메서드를 호출 하 여 알림 개체를 인스턴스화합니다.Call the Build method of the NotificationCompat.Builder object to instantiate a notification object.

  4. 알림 관리자의 알림 메서드를 호출 하 여 알림을 게시 합니다.Call the Notify method of the notification manager to publish the notification.

각 알림에 대해 최소한 다음 정보를 제공 해야 합니다.You must provide at least the following information for each notification:

  • 작은 아이콘 (24x24 dp 크기)A small icon (24x24 dp in size)

  • 짧은 제목A short title

  • 알림 텍스트The text of the notification

다음 코드 예제에서는 NotificationCompat.Builder를 사용 하 여 기본 알림을 생성 하는 방법을 보여 줍니다.The following code example illustrates how to use NotificationCompat.Builder to generate a basic notification. NotificationCompat.Builder 메서드는 메서드 체인을 지원 합니다. 즉, 각 메서드는 빌더 개체를 반환 하므로 마지막 메서드 호출의 결과를 사용 하 여 다음 메서드 호출을 호출할 수 있습니다.Notice that NotificationCompat.Builder methods support method chaining; that is, each method returns the builder object so you can use the result of the last method call to invoke the next method call:

// Instantiate the builder and set notification elements:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my first notification!")
    .SetSmallIcon (Resource.Drawable.ic_notification);

// Build the notification:
Notification notification = builder.Build();

// Get the notification manager:
NotificationManager notificationManager =
    GetSystemService (Context.NotificationService) as NotificationManager;

// Publish the notification:
const int notificationId = 0;
notificationManager.Notify (notificationId, notification);

이 예제에서는 사용할 알림 채널의 ID와 함께 builder 라는 새 NotificationCompat.Builder 개체가 인스턴스화됩니다.In this example, a new NotificationCompat.Builder object called builder is instantiated, along with the ID of the notification channel to be used. 알림의 제목과 텍스트가 설정 되 고, 알림 아이콘이 Resources/그릴 수 있는/ic_notification에서 로드 됩니다.The title and text of the notification are set, and the notification icon is loaded from Resources/drawable/ic_notification.png. 알림 작성기의 Build 메서드에 대 한 호출은 이러한 설정을 사용 하 여 알림 개체를 만듭니다.The call to the notification builder's Build method creates a notification object with these settings. 다음 단계는 알림 관리자의 Notify 메서드를 호출 하는 것입니다.The next step is to call the Notify method of the notification manager. 알림 관리자를 찾으려면 위에 표시 된 대로 GetSystemService를 호출 합니다.To locate the notification manager, you call GetSystemService, as shown above.

Notify 메서드는 알림 식별자 및 notification 개체 라는 두 개의 매개 변수를 허용 합니다.The Notify method accepts two parameters: the notification identifier and the notification object. 알림 id는 응용 프로그램에 대 한 알림을 식별 하는 고유한 정수입니다.The notification identifier is a unique integer that identifies the notification to your application. 이 예제에서 알림 식별자는 0으로 설정 됩니다. 그러나 프로덕션 응용 프로그램에서는 각 알림에 고유한 식별자를 지정 하는 것이 좋습니다.In this example, the notification identifier is set to zero (0); however, in a production application, you will want to give each notification a unique identifier. Notify에 대 한 호출에서 이전 식별자 값을 다시 사용 하면 마지막 알림이 덮어쓰여집니다.Reusing the previous identifier value in a call to Notify causes the last notification to be overwritten.

이 코드는 Android 5.0 장치에서 실행 되는 경우 다음 예제와 같은 알림을 생성 합니다.When this code runs on an Android 5.0 device, it generates a notification that looks like the following example:

샘플 코드에 대 한 알림 결과

알림 아이콘은 알림의 왼쪽에 표시 됩니다 .이 이미지는 원” “이미지 – 알파 채널이 있으므로 Android에서 회색 원형 배경을 그릴 수 있습니다.The notification icon is displayed on the left hand side of the notification – this image of a circled “i” has an alpha channel so that Android can draw a gray circular background behind it. 알파 채널 없이 아이콘을 제공할 수도 있습니다.You can also supply an icon without an alpha channel. 사진 이미지를 아이콘으로 표시 하려면이 항목의 뒷부분에 나오는 크게 아이콘 형식 을 참조 하세요.To display a photographic image as an icon, see Large Icon Format later in this topic.

타임 스탬프는 자동으로 설정 되지만 알림 작성기의 Setwhen 메서드를 호출 하 여이 설정을 재정의할 수 있습니다.The timestamp is set automatically, but you can override this setting by calling the SetWhen method of the notification builder. 예를 들어 다음 코드 예제에서는 타임 스탬프를 현재 시간으로 설정 합니다.For example, the following code example sets the timestamp to the current time:

builder.SetWhen (Java.Lang.JavaSystem.CurrentTimeMillis());

음향 및 진동 사용Enabling sound and vibration

알림이 소리를 재생 하도록 하려면 알림 작성기의 Setdefaults 메서드를 호출 하 고 NotificationDefaults.Sound 플래그를 전달 하면 됩니다.If you want your notification to also play a sound, you can call the notification builder's SetDefaults method and pass in the NotificationDefaults.Sound flag:

// Instantiate the notification builder and enable sound:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my first notification!")
    .SetDefaults (NotificationDefaults.Sound)
    .SetSmallIcon (Resource.Drawable.ic_notification);

SetDefaults를 호출 하면 알림이 게시 될 때 장치가 소리를 재생 합니다.This call to SetDefaults will cause the device to play a sound when the notification is published. 장치가 소리를 재생 하는 대신 진동 하도록 하려면 장치에서 소리를 재생 하 고 장치를 진동 하는 경우 SetDefaults.NotificationDefaults.Vibrate를 전달할 수 있습니다. SetDefaults에 두 플래그를 모두 전달할 수 있습니다.If you want the device to vibrate rather than play a sound, you can pass NotificationDefaults.Vibrate to SetDefaults. If you want the device to play a sound and vibrate the device, you can pass both flags to SetDefaults:

builder.SetDefaults (NotificationDefaults.Sound | NotificationDefaults.Vibrate);

재생할 소리를 지정 하지 않고 소리를 사용 하도록 설정 하면 Android에서 기본 시스템 알림 소리를 사용 합니다.If you enable sound without specifying a sound to play, Android uses the default system notification sound. 그러나 알림 작성기의 setsound 메서드를 호출 하 여 재생 되는 소리를 변경할 수 있습니다.However, you can change the sound that will be played by calling the notification builder's SetSound method. 예를 들어 알림을 사용 하 여 알람 소리를 재생 하려면 (기본 알림 사운드 대신) RingtoneManager 에서 알람 소리에 대 한 URI를 가져온 다음 SetSound에 전달할 수 있습니다.For example, to play the alarm sound with your notification (instead of the default notification sound), you can get the URI for the alarm sound from the RingtoneManager and pass it to SetSound:

builder.SetSound (RingtoneManager.GetDefaultUri(RingtoneType.Alarm));

또는 알림에 대해 시스템 기본 벨 소리 소리를 사용할 수 있습니다.Alternatively, you can use the system default ringtone sound for your notification:

builder.SetSound (RingtoneManager.GetDefaultUri(RingtoneType.Ringtone));

알림 개체를 만든 후에는 NotificationCompat.Builder 메서드를 통해 미리 구성 하는 대신 알림 개체에 알림 속성을 설정할 수 있습니다.After you create a notification object, it's possible to set notification properties on the notification object (rather than configure them in advance through NotificationCompat.Builder methods). 예를 들어 알림에 대해 진동을 사용 하도록 SetDefaults 메서드를 호출 하는 대신 알림의 기본값 속성의 비트 플래그를 직접 수정할 수 있습니다.For example, instead of calling the SetDefaults method to enable vibration on a notification, you can directly modify the bit flag of the notification's Defaults property:

// Build the notification:
Notification notification = builder.Build();

// Turn on vibrate:
notification.Defaults |= NotificationDefaults.Vibrate;

이 예제에서는 알림이 게시 될 때 장치를 진동 합니다.This example causes the device to vibrate when the notification is published.

알림 업데이트Updating a notification

게시 된 알림의 콘텐츠를 업데이트 하려는 경우 기존 NotificationCompat.Builder 개체를 다시 사용 하 여 새 알림 개체를 만들고 마지막 알림의 식별자로이 알림을 게시할 수 있습니다.If you want to update the content of a notification after it has been published, you can reuse the existing NotificationCompat.Builder object to create a new notification object and publish this notification with the identifier of the last notification. 예:For example:

// Update the existing notification builder content:
builder.SetContentTitle ("Updated Notification");
builder.SetContentText ("Changed to this message.");

// Build a notification object with updated content:
notification = builder.Build();

// Publish the new notification with the existing ID:
notificationManager.Notify (notificationId, notification);

이 예제에서는 기존 NotificationCompat.Builder 개체를 사용 하 여 다른 제목과 메시지를 사용 하 여 새 알림 개체를 만듭니다.In this example, the existing NotificationCompat.Builder object is used to create a new notification object with a different title and message. 새 notification 개체는 이전 알림의 식별자를 사용 하 여 게시 되 고 이전에 게시 된 알림의 콘텐츠를 업데이트 합니다.The new notification object is published using the identifier of the previous notification, and this updates the content of the previously-published notification:

업데이트 된 알림

알림이 알림 서랍에 표시 되는 동안에는 이전 알림의 본문이 다시 사용 됩니다. 알림이 알림 서랍에 표시 되는 동안에는 알림이 변경 –.The body of the previous notification is reused – only the title and the text of the notification changes while the notification is displayed in the notification drawer. 제목 텍스트가 "Sample Notification"에서 "업데이트 된 알림"으로 바뀌고 메시지 텍스트는 "Hello World!The title text changes from "Sample Notification" to "Updated Notification" and the message text changes from "Hello World! 이것은 첫 번째 알림입니다. "This is my first notification!" "이 메시지를 변경 했습니다."to "Changed to this message."

다음 세 가지 중 하나가 발생할 때까지 알림이 계속 표시 됩니다.A notification remains visible until one of three things happens:

  • 사용자가 알림을 해제 하거나 [ 모두 지우기]를 탭 합니다.The user dismisses the notification (or taps Clear All).

  • 응용 프로그램은 알림을 게시할 때 할당 된 고유한 알림 ID를 전달 하 여 NotificationManager.Cancel를 호출 합니다.The application makes a call to NotificationManager.Cancel, passing in the unique notification ID that was assigned when the notification was published.

  • 응용 프로그램이 NotificationManager.CancelAll를 호출 합니다.The application calls NotificationManager.CancelAll.

Android 알림 업데이트에 대 한 자세한 내용은 알림 수정을 참조 하세요.For more about updating Android notifications, see Modify a Notification.

알림에서 작업 시작Starting an activity from a notification

Android에서 사용자가 알림을 탭 할 때 실행 되는 작업 – 작업 에 대 한 알림을 사용 하는 것이 일반적입니다.In Android, it's common for a notification to be associated with an action – an activity that's launched when the user taps the notification. 이 활동은 다른 응용 프로그램에 있거나 다른 작업 에서도 존재할 수 있습니다.This activity can reside in another application or even in another task. 알림에 작업을 추가 하려면 Pendingintent 개체를 만들고 해당 알림과 PendingIntent을 연결 합니다.To add an action to a notification, you create a PendingIntent object and associate the PendingIntent with the notification. PendingIntent은 수신자 응용 프로그램에서 보내는 응용 프로그램의 사용 권한으로 미리 정의 된 코드 조각을 실행할 수 있도록 하는 특별 한 유형의 의도입니다.A PendingIntent is a special type of intent that allows the recipient application to run a predefined piece of code with the permissions of the sending application. 사용자가 알림을 탭 하면 Android가 PendingIntent에 지정 된 작업을 시작 합니다.When the user taps the notification, Android starts up the activity specified by the PendingIntent.

다음 코드 조각에서는 MainActivity원본 앱의 활동을 시작 하는 PendingIntent를 사용 하 여 알림을 만드는 방법을 보여 줍니다.The following code snippet illustrates how to create a notification with a PendingIntent that will launch the activity of the originating app, MainActivity:

// Set up an intent so that tapping the notifications returns to this app:
Intent intent = new Intent (this, typeof(MainActivity));

// Create a PendingIntent; we're only using one PendingIntent (ID = 0):
const int pendingIntentId = 0;
PendingIntent pendingIntent =
    PendingIntent.GetActivity (this, pendingIntentId, intent, PendingIntentFlags.OneShot);

// Instantiate the builder and set notification elements, including pending intent:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentIntent (pendingIntent)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my first action notification!")
    .SetSmallIcon (Resource.Drawable.ic_notification);

// Build the notification:
Notification notification = builder.Build();

// Get the notification manager:
NotificationManager notificationManager =
    GetSystemService (Context.NotificationService) as NotificationManager;

// Publish the notification:
const int notificationId = 0;
notificationManager.Notify (notificationId, notification);

이 코드는 PendingIntent 알림 개체에 추가 된다는 점을 제외 하 고 이전 섹션의 알림 코드와 매우 비슷합니다.This code is very similar to the notification code in the previous section, except that a PendingIntent is added to the notification object. 이 예제에서 PendingIntent는 알림 작성기의 Setcontentintent 메서드에 전달 되기 전에 원래 앱의 활동과 연결 됩니다.In this example, the PendingIntent is associated with the activity of the originating app before it is passed to the notification builder's SetContentIntent method. PendingIntentFlags.OneShot 플래그는 PendingIntent를 한 번만 사용 하도록 PendingIntent.GetActivity 메서드에 전달 됩니다.The PendingIntentFlags.OneShot flag is passed to the PendingIntent.GetActivity method so that the PendingIntent is used only once. 이 코드가 실행 되 면 다음과 같은 알림이 표시 됩니다.When this code runs, the following notification is displayed:

첫 번째 작업 알림

이 알림을 누르면 사용자가 원래 활동으로 돌아갑니다.Tapping this notification takes the user back to the originating activity.

프로덕션 앱에서는 사용자가 알림 작업 내에서 뒤로 단추를 누를 때 앱이 뒤로 스택을 처리 해야 합니다 (Android 작업 및 뒤로 스택에 익숙하지 않은 경우 작업 및 뒤로 스택참조).In a production app, your app must handle the back stack when the user presses the Back button within the notification activity (if you are not familiar with Android tasks and the back stack, see Tasks and Back Stack). 대부분의 경우 알림 작업에서 뒤로 이동 하면 앱에서 사용자를 반환 하 고 홈 화면으로 다시 이동 해야 합니다.In most cases, navigating backward out of the notification activity should return the user out of the app and back to Home screen. 백 스택을 관리 하기 위해 앱은 Taskstackbuilder 클래스를 사용 하 여 백 스택으로 PendingIntent를 만듭니다.To manage the back stack, your app uses the TaskStackBuilder class to create a PendingIntent with a back stack.

또 다른 실제적인 고려 사항은 원래 활동에서 알림 활동에 데이터를 보내야 할 수도 있다는 것입니다.Another real-world consideration is that the originating activity may need to send data to the notification activity. 예를 들어 알림에는 문자 메시지가 도착 했음을 나타내고 알림 작업 (메시지 보기 화면)에는 메시지 ID를 사용 하 여 사용자에 게 메시지를 표시할 수 있습니다.For example, the notification may indicate that a text message has arrived, and the notification activity (a message viewing screen), requires the ID of the message to display the message to the user. PendingIntent를 만드는 활동은이 데이터가 알림 활동에 전달 되도록 의도 . PutExtra 메서드를 사용 하 여 데이터 (예: 문자열)를 의도에 추가할 수 있습니다.The activity that creates the PendingIntent can use the Intent.PutExtra method to add data (for example, a string) to the intent so that this data is passed to the notification activity.

다음 코드 샘플은 TaskStackBuilder를 사용 하 여 백 스택을 관리 하는 방법을 보여 줍니다 .이 예에서는 SecondActivity라는 알림 작업에 단일 메시지 문자열을 보내는 방법에 대 한 예제를 제공 합니다.The following code sample illustrates how to use TaskStackBuilder to manage the back stack, and it includes an example of how to send a single message string to a notification activity called SecondActivity:

// Setup an intent for SecondActivity:
Intent secondIntent = new Intent (this, typeof(SecondActivity));

// Pass some information to SecondActivity:
secondIntent.PutExtra ("message", "Greetings from MainActivity!");

// Create a task stack builder to manage the back stack:
TaskStackBuilder stackBuilder = TaskStackBuilder.Create(this);

// Add all parents of SecondActivity to the stack:
stackBuilder.AddParentStack (Java.Lang.Class.FromType (typeof (SecondActivity)));

// Push the intent that starts SecondActivity onto the stack:
stackBuilder.AddNextIntent (secondIntent);

// Obtain the PendingIntent for launching the task constructed by
// stackbuilder. The pending intent can be used only once (one shot):
const int pendingIntentId = 0;
PendingIntent pendingIntent =
    stackBuilder.GetPendingIntent (pendingIntentId, PendingIntentFlags.OneShot);

// Instantiate the builder and set notification elements, including
// the pending intent:
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
    .SetContentIntent (pendingIntent)
    .SetContentTitle ("Sample Notification")
    .SetContentText ("Hello World! This is my second action notification!")
    .SetSmallIcon (Resource.Drawable.ic_notification);

// Build the notification:
Notification notification = builder.Build();

// Get the notification manager:
NotificationManager notificationManager =
    GetSystemService (Context.NotificationService) as NotificationManager;

// Publish the notification:
const int notificationId = 0;
notificationManager.Notify (notificationId, notification);

이 코드 예제에서 앱은 MainActivity (위의 알림 코드 포함) 및 SecondActivity사용자가 알림을 탭 하면 표시 되는 화면 이라는 두 가지 작업으로 구성 됩니다.In this code example, the app consists of two activities: MainActivity (which contains the notification code above), and SecondActivity, the screen the user sees after tapping the notification. 이 코드가 실행 되 면 간단한 알림 (이전 예제와 유사)이 표시 됩니다.When this code is run, a simple notification (similar to the previous example) is presented. 알림을 누르면 사용자가 SecondActivity 화면으로 이동 합니다.Tapping on the notification takes the user to the SecondActivity screen:

두 번째 활동 스크린샷

문자열 메시지 (의도의 PutExtra 메서드로 전달 됨)는 다음 코드 줄을 통해 SecondActivity에서 검색 됩니다.The string message (passed into the intent's PutExtra method) is retrieved in SecondActivity via this line of code:

// Get the message from the intent:
string message = Intent.Extras.GetString ("message", "");

위의 스크린샷에 표시 된 것 처럼이 검색 된 메시지 "MainActivity!"의 인사말과 SecondActivity 화면에 표시 됩니다.This retrieved message, "Greetings from MainActivity!," is displayed in the SecondActivity screen, as shown in the above screenshot. 사용자가 SecondActivity하는 동안 뒤로 단추를 누르면 앱이 시작 되 고 앱이 시작 된 후에 다시 화면으로 이동 합니다.When the user presses the Back button while in SecondActivity, navigation leads out of the app and back to the screen preceding the launch of the app.

보류 중인 의도를 만드는 방법에 대 한 자세한 내용은 Pendingintent를 참조 하세요.For more information about creating pending intents, see PendingIntent.

기본 알림 이상Beyond the basic notification

알림은 Android의 간단한 기본 레이아웃 형식 이지만 추가 NotificationCompat.Builder 메서드 호출을 수행 하 여이 기본 형식을 향상 시킬 수 있습니다.Notifications default to a simple base layout format in Android, but you can enhance this basic format by making additional NotificationCompat.Builder method calls. 이 섹션에서는 알림에 긴 사진 아이콘을 추가 하는 방법에 대해 알아보고 확장 된 레이아웃 알림을 만드는 방법에 대 한 예제를 살펴봅니다.In this section, you'll learn how to add a large photo icon to your notification, and you'll see examples of how to create expanded layout notifications.

크게 아이콘 형식Large icon format

Android 알림은 일반적으로 알림의 왼쪽에 있는 원래 앱의 아이콘을 표시 합니다.Android notifications typically display the icon of the originating app (on the left side of the notification). 그러나 알림은 표준 작은 아이콘 대신 이미지나 사진 ( 크게 아이콘)을 표시할 수 있습니다.However, notifications can display an image or a photo (a large icon) instead of the standard small icon. 예를 들어 메시징 앱은 앱 아이콘이 아닌 보낸 사람의 사진을 표시할 수 있습니다.For example, a messaging app could display a photo of the sender rather than the app icon.

다음은 작은 앱 아이콘만 표시 –는 기본 Android 5.0 알림의 예입니다.Here is an example of a basic Android 5.0 notification – it displays only the small app icon:

예제 일반 알림

다음은 Xamarin 코드 원숭이 이미지에서 만들어진 아이콘을 사용 하 – 커다란 아이콘을 표시 하도록 수정한 후의 알림 스크린샷입니다.And here is a screenshot of the notification after modifying it to display a large icon – it uses an icon created from an image of a Xamarin code monkey:

예 크게 아이콘 알림

알림이 크게 아이콘 형식으로 표시 되는 경우 작은 앱 아이콘은 크게 아이콘의 오른쪽 아래 모서리에 배지로 표시 됩니다.Notice that when a notification is presented in large icon format, the small app icon is displayed as a badge on the lower right corner of the large icon.

알림에서 이미지를 큼 아이콘으로 사용 하려면 알림 작성기의 SetLargeIcon 메서드를 호출 하 고 이미지의 비트맵을 전달 합니다.To use an image as a large icon in a notification, you call the notification builder's SetLargeIcon method and pass in a bitmap of the image. SetSmallIcon와 달리 SetLargeIcon는 비트맵만 허용 합니다.Unlike SetSmallIcon, SetLargeIcon only accepts a bitmap. 비트맵으로 이미지 파일을 변환 하려면 BitmapFactory 클래스를 사용 합니다.To convert an image file into a bitmap, you use the BitmapFactory class. 예:For example:

builder.SetLargeIcon (BitmapFactory.DecodeResource (Resources, Resource.Drawable.monkey_icon));

이 예제 코드는 Resources/그릴 수 있는/monkey_icon에서 이미지 파일을 열고 비트맵으로 변환한 다음 결과 비트맵을 NotificationCompat.Builder에 전달 합니다.This example code opens the image file at Resources/drawable/monkey_icon.png, converts it to a bitmap, and passes the resulting bitmap to NotificationCompat.Builder. 일반적으로 원본 이미지 해상도는 – 작은 아이콘 보다 크므로 크게 크지 않습니다.Typically, the source image resolution is larger than the small icon – but not much larger. 이미지가 너무 크면 알림 게시를 지연 시킬 수 있는 불필요 한 크기 조정 작업이 발생할 수 있습니다.An image that is too large might cause unnecessary resizing operations that could delay the posting of the notification.

큰 텍스트 스타일Big text style

큰 텍스트 스타일은 알림에서 긴 메시지를 표시 하는 데 사용 하는 확장 된 레이아웃 템플릿입니다.The Big Text style is an expanded layout template that you use for displaying long messages in notifications. 모든 확장 된 레이아웃 알림과 마찬가지로, 빅 텍스트 알림이 처음에는 컴팩트 프레젠테이션 형식으로 표시 됩니다.Like all expanded layout notifications, the Big Text notification is initially displayed in a compact presentation format:

큰 텍스트 알림 예제

이 형식에서는 메시지의 발췌만 표시 되 고 두 개의 마침표로 종료 됩니다.In this format, only an excerpt of the message is shown, terminated by two periods. 사용자가 알림을 아래로 끌면 전체 알림 메시지를 표시 하도록 확장 됩니다.When the user drags down on the notification, it expands to reveal the entire notification message:

확장 된 빅 텍스트 알림

이 확장 된 레이아웃 형식에는 알림 하단의 요약 텍스트도 포함 되어 있습니다.This expanded layout format also includes summary text at the bottom of the notification. 빅 텍스트 알림의 최대 높이는 256 dp입니다.The maximum height of the Big Text notification is 256 dp.

큰 텍스트 알림을 만들려면 이전 처럼 NotificationCompat.Builder 개체를 인스턴스화한 다음를 인스턴스화하고 추가 textstyle 개체를 NotificationCompat.Builder 개체에 추가 합니다.To create a Big Text notification, you instantiate a NotificationCompat.Builder object, as before, and then instantiate and add a BigTextStyle object to the NotificationCompat.Builder object. 다음 예를 참조하세요.Here is an example:

// Instantiate the Big Text style:
Notification.BigTextStyle textStyle = new Notification.BigTextStyle();

// Fill it with text:
string longTextMessage = "I went up one pair of stairs.";
longTextMessage += " / Just like me. ";
//...
textStyle.BigText (longTextMessage);

// Set the summary text:
textStyle.SetSummaryText ("The summary text goes here.");

// Plug this style into the builder:
builder.SetStyle (textStyle);

// Create the notification and publish it ...

이 예제에서 메시지 텍스트와 요약 텍스트는에 전달 되기 전에 BigTextStyle 개체 (textStyle)에 저장 됩니다 NotificationCompat.Builder.In this example, the message text and summary text are stored in the BigTextStyle object (textStyle) before it is passed to NotificationCompat.Builder.

이미지 스타일Image style

이미지 스타일 ( 큰 그림 스타일이 라고도 함)은 알림 본문에 이미지를 표시 하는 데 사용할 수 있는 확장 된 알림 형식입니다.The Image style (also called the Big Picture style) is an expanded notification format that you can use to display an image in the body of a notification. 예를 들어 스크린샷 앱 또는 사진 앱은 이미지 알림 스타일을 사용 하 여 캡처된 마지막 이미지에 대 한 알림을 사용자에 게 제공할 수 있습니다.For example, a screenshot app or a photo app can use the Image notification style to provide the user with a notification of the last image that was captured. 이미지 알림의 최대 높이는 256 Dp – Android는 사용 가능한 메모리 제한 내에서이 최대 높이 제한에 맞게 이미지 크기를 조정 합니다.Note that the maximum height of the Image notification is 256 dp – Android will resize the image to fit into this maximum height restriction, within the limits of available memory.

모든 확장 된 레이아웃 알림과 마찬가지로 이미지 알림은 해당 메시지 텍스트의 발췌를 표시 하는 압축 형식으로 먼저 표시 됩니다.Like all expanded layout notifications, Image notifications are first displayed in a compact format that displays an excerpt of the accompanying message text:

압축 이미지 알림에 이미지가 표시 되지 않음

사용자가 이미지 알림을 아래로 끌면 이미지를 표시 하도록 확장 됩니다.When the user drags down on the Image notification, it expands to reveal an image. 예를 들어 다음은 이전 알림의 확장 된 버전입니다.For example, here is the expanded version of the previous notification:

확장 된 이미지 알림이 이미지를 표시 합니다.

알림이 압축 형식으로 표시 되 면 알림 텍스트 (이전에 표시 된 것 처럼 알림 작성기의 SetContentText 메서드로 전달 되는 텍스트)가 표시 됩니다.Notice that when the notification is displayed in compact format, it displays notification text (the text that is passed to the notification builder's SetContentText method, as shown earlier). 그러나 이미지를 표시 하도록 알림을 확장 하면 이미지 위에 요약 텍스트가 표시 됩니다.However, when the notification is expanded to reveal the image, it displays summary text above the image.

이미지 알림을 만들려면 이전 처럼 NotificationCompat.Builder 개체를 인스턴스화한 다음 NotificationCompat.Builder개체에 개체에 대 한 BigPictureStyle개체를 만들어 삽입합니다.To create an Image notification, you instantiate a NotificationCompat.Builder object as before, and then create and insert a BigPictureStyle object into the NotificationCompat.Builder object. 예를 들어:For example:

// Instantiate the Image (Big Picture) style:
Notification.BigPictureStyle picStyle = new Notification.BigPictureStyle();

// Convert the image to a bitmap before passing it into the style:
picStyle.BigPicture (BitmapFactory.DecodeResource (Resources, Resource.Drawable.x_bldg));

// Set the summary text that will appear with the image:
picStyle.SetSummaryText ("The summary text goes here.");

// Plug this style into the builder:
builder.SetStyle (picStyle);

// Create the notification and publish it ...

NotificationCompat.BuilderSetLargeIcon메서드와 마찬가지로 BigPictureStyleBigPicture 메서드는알림의본문에표시하려는이미지의비트맵이필요 합니다.Like the SetLargeIcon method of NotificationCompat.Builder, the BigPicture method of BigPictureStyle requires a bitmap of the image that you want to display in the body of the notification. 이 예제에서 BitmapFactoryDecodeResource 메서드는 Resources/x_bldg/ 에 있는 이미지 파일을 읽고 비트맵으로 변환 합니다.In this example, the DecodeResource method of BitmapFactory reads the image file located at Resources/drawable/x_bldg.png and converts it into a bitmap.

리소스로 패키지 되지 않은 이미지를 표시할 수도 있습니다.You can also display images that are not packaged as a resource. 예를 들어 다음 샘플 코드는 로컬 SD 카드에서 이미지를 로드 하 고 이미지 알림에 표시 합니다.For example, the following sample code loads an image from the local SD card and displays it in an Image notification:

// Using the Image (Big Picture) style:
Notification.BigPictureStyle picStyle = new Notification.BigPictureStyle();

// Read an image from the SD card, subsample to half size:
BitmapFactory.Options options = new BitmapFactory.Options();
options.InSampleSize = 2;
string imagePath = "/sdcard/Pictures/my-tshirt.jpg";
picStyle.BigPicture (BitmapFactory.DecodeFile (imagePath, options));

// Set the summary text that will appear with the image:
picStyle.SetSummaryText ("Check out my new T-Shirt!");

// Plug this style into the builder:
builder.SetStyle (picStyle);

// Create notification and publish it ...

이 예제에서는 /sdcard/Pictures/my-tshirt.jpg 에 있는 이미지 파일이 로드 되 고 원래 크기의 절반으로 크기가 조정 된 다음 알림에 사용할 수 있도록 비트맵으로 변환 됩니다.In this example, the image file located at /sdcard/Pictures/my-tshirt.jpg is loaded, resized to half of its original size, and then converted to a bitmap for use in the notification:

알림에서 티셔츠 이미지 예

이미지 파일의 크기를 미리 알 수 없는 경우에는 예외 처리기에 BitmapFactory 에 대 한 호출을 래핑하는 것이 좋습니다. 이미지가 너무 커서 크기를 조정할 수 없는 경우 OutOfMemoryError 예외가 throw 될 수 –.If you don't know the size of the image file in advance, it's a good idea to wrap the call to BitmapFactory.DecodeFile in an exception handler – an OutOfMemoryError exception might be thrown if the image is too large for Android to resize.

대량 비트맵 이미지를 로드 하 고 디코딩하는 방법에 대 한 자세한 내용은 효율적인 대량 비트맵 로드를 참조 하세요.For more about loading and decoding large bitmap images, see Load Large Bitmaps Efficiently.

수신함 스타일Inbox style

수신함 형식은 알림 본문에 전자 메일 받은 편지함 요약 등의 별도의 텍스트 줄을 표시 하기 위한 확장 된 레이아웃 템플릿입니다.The Inbox format is an expanded layout template intended for displaying separate lines of text (such as an email inbox summary) in the body of the notification. 받은 편지함 형식 알림은 먼저 압축 형식으로 표시 됩니다.The Inbox format notification is first displayed in a compact format:

예제 compact 수신함 알림

사용자가 알림을 아래로 끌면 아래 스크린샷에 표시 된 대로 확장 되어 전자 메일 요약을 표시 합니다.When the user drags down on the notification, it expands to reveal an email summary as seen in the screenshot below:

확장 된 예제 수신함 알림

받은 편지함 알림을 만들려면 이전과 같은 NotificationCompat.Builder 개체를 인스턴스화하고 NotificationCompat.BuilderInboxStyle 개체를 추가 합니다.To create an Inbox notification, you instantiate a NotificationCompat.Builder object, as before, and add an InboxStyle object to the NotificationCompat.Builder. 다음 예를 참조하세요.Here is an example:

// Instantiate the Inbox style:
Notification.InboxStyle inboxStyle = new Notification.InboxStyle();

// Set the title and text of the notification:
builder.SetContentTitle ("5 new messages");
builder.SetContentText ("chimchim@xamarin.com");

// Generate a message summary for the body of the notification:
inboxStyle.AddLine ("Cheeta: Bananas on sale");
inboxStyle.AddLine ("George: Curious about your blog post");
inboxStyle.AddLine ("Nikko: Need a ride to Evolve?");
inboxStyle.SetSummaryText ("+2 more");

// Plug this style into the builder:
builder.SetStyle (inboxStyle);

알림 본문에 새 텍스트 줄을 추가 하려면 InboxStyle 개체의 Addline 메서드를 호출 합니다 ( 수신함 알림의 최대 높이는 256 dp).To add new lines of text to the notification body, call the Addline method of the InboxStyle object (the maximum height of the Inbox notification is 256 dp). 큰 텍스트 스타일과 달리 수신함 스타일은 알림 본문에서 개별 텍스트 줄을 지원 합니다.Note that, unlike Big Text style, the Inbox style supports individual lines of text in the notification body.

또한 개별 텍스트 줄을 확장 된 형식으로 표시 해야 하는 모든 알림에 대해 수신함 스타일을 사용할 수 있습니다.You can also use the Inbox style for any notification that needs to display individual lines of text in an expanded format. 예를 들어, 수신함 알림 스타일을 사용 하 여 여러 보류 중인 알림을 요약 알림으로 결합할 수 –, 새 알림 내용 줄이 포함 된 단일 수신함 스타일 알림을 업데이트할 수 있습니다 ( 업데이트를 참조 하세요. 위의 알림 )-자주 발생 하는 새로운 알림의 연속 스트림을 생성 하지 않습니다.For example, the Inbox notification style can be used to combine multiple pending notifications into a summary notification – you can update a single Inbox style notification with new lines of notification content (see Updating a Notification above), rather than generate a continuous stream of new, mostly similar notifications.

메타 데이터 구성Configuring metadata

NotificationCompat.Builder에는 우선 순위, 표시 유형, 범주 등 알림에 대 한 메타 데이터를 설정 하기 위해 호출할 수 있는 메서드가 포함 되어 있습니다.NotificationCompat.Builder includes methods that you can call to set metadata about your notification, such as priority, visibility, and category. Android는이 정보 — 사용자 기본 설정 설정 —와 함께 사용 하 여 알림을 표시 하는 방법과 시기를 결정 합니다.Android uses this information — along with user preference settings — to determine how and when to display notifications.

우선 순위 설정Priority settings

Android 7.1에서 실행 되는 앱은 알림 자체에서 직접 우선 순위를 설정 해야 합니다.Apps running on Android 7.1 and lower need to set the priority directly on the notification itself. 알림의 우선 순위 설정은 알림이 게시 될 때 두 가지 결과를 결정 합니다.The priority setting of a notification determines two outcomes when the notification is published:

  • 다른 알림과 관련 하 여 알림이 표시 되는 위치입니다.Where the notification appears in relation to other notifications. 예를 들어 우선 순위가 높은 알림은 각 알림이 게시 된 시기에 관계 없이 알림 서랍의 낮은 우선 순위 알림 위에 표시 됩니다.For example, high priority notifications are presented above lower priority notifications in the notifications drawer, regardless of when each notification was published.

  • 알림이 준비 알림 형식 (Android 5.0 이상)에 표시 되는지 여부입니다.Whether the notification is displayed in the Heads-up notification format (Android 5.0 and later). 높음최대 우선 순위 알림만 준비 알림으로 표시 됩니다.Only high and maximum priority notifications are displayed as Heads-up notifications.

Xamarin.ios는 알림 우선 순위를 설정 하기 위해 다음 열거형을 정의 합니다.Xamarin.Android defines the following enumerations for setting notification priority:

  • NotificationPriority.Max –는 긴급 하거나 중요 한 조건 (예: 들어오는 전화, 턴 턴 방향 또는 비상 경고)에 대해 사용자에 게 경고 합니다.NotificationPriority.Max – Alerts the user to an urgent or critical condition (for example, an incoming call, turn-by-turn directions, or an emergency alert). Android 5.0 이상 장치에서는 최대 우선 순위 알림이 준비 형식으로 표시 됩니다.On Android 5.0 and later devices, maximum priority notifications are displayed in Heads-up format.

  • NotificationPriority.High – 중요 한 이벤트 (예: 중요 한 전자 메일 또는 실시간 채팅 메시지 도착)를 사용자에 게 알립니다.NotificationPriority.High – Informs the user of important events (such as important emails or the arrival of real-time chat messages). Android 5.0 이상 장치에서는 높은 우선 순위 알림이 준비 형식으로 표시 됩니다.On Android 5.0 and later devices, high priority notifications are displayed in Heads-up format.

  • NotificationPriority.Default –는 중간 수준의 중요도가 있는 조건을 사용자에 게 알립니다.NotificationPriority.Default – Notifies the user of conditions that have a medium level of importance.

  • 사용자에 게 알려야 하는 긴급 하지 않은 정보에 대 한 – NotificationPriority.Low (예: 소프트웨어 업데이트 미리 알림 또는 소셜 네트워크 업데이트).NotificationPriority.Low – For non-urgent information that the user needs to be informed of (for example, software update reminders or social network updates).

  • NotificationPriority.Min는 알림 (예: 위치 또는 날씨 정보)을 볼 때만 사용자에 게 알리는 배경 정보를 – 합니다.NotificationPriority.Min – For background information that the user notices only when viewing notifications (for example, location or weather information).

알림의 우선 순위를 설정 하려면 NotificationCompat.Builder 개체의 Setpriority 메서드를 호출 하 여 우선 순위 수준으로 전달 합니다.To set the priority of a notification, call the SetPriority method of the NotificationCompat.Builder object, passing in the priority level. 예를 들어:For example:

builder.SetPriority (NotificationPriority.High);

다음 예에서는 높은 우선 순위 알림 인 "중요 한 메시지!"In the following example, the high priority notification, "An important message!" 알림 서랍의 맨 위에 나타납니다.appears at the top of the notification drawer:

우선 순위가 높은 알림 예제

이는 우선 순위가 높은 알림 이므로 Android 5.0에서 사용자의 현재 작업 화면 위에 있는 요약 알림으로도 표시 됩니다.Because this is a high-priority notification, it is also displayed as a Heads-up notification above the user's current activity screen in Android 5.0:

예제 헤드 알림

다음 예제에서 낮은 우선 순위의 "일"은 우선 순위가 높은 배터리 수준 알림에서 표시 됩니다.In the next example, the low-priority "Thought for the day" notification is displayed under a higher-priority battery level notification:

낮은 우선 순위 알림 예제

"일에 대 한 생각" 알림은 낮은 우선 순위의 알림 이므로 Android는이를 준비 형식으로 표시 하지 않습니다.Because the "Thought for the day" notification is a low-priority notification, Android will not display it in Heads-up format.

참고

Android 8.0 이상에서 알림 채널 및 사용자 설정의 우선 순위에 따라 알림의 우선 순위가 결정 됩니다.On Android 8.0 and higher, the priority of the notification channel and user settings will determine the priority of the notification.

표시 유형 설정Visibility settings

Android 5.0부터 표시 유형 설정을 사용 하 여 보안 잠금 화면에 표시 되는 알림 콘텐츠의 크기를 제어할 수 있습니다.Beginning with Android 5.0, the visibility setting is available to control how much notification content appears on the secure lock screen. Xamarin Android는 알림 표시 여부를 설정 하기 위해 다음 열거형을 정의 합니다.Xamarin.Android defines the following enumerations for setting notification visibility:

  • NotificationVisibility.Public – 알림의 전체 콘텐츠가 보안 잠금 화면에 표시 됩니다.NotificationVisibility.Public – The full content of the notification is displayed on the secure lock screen.

  • NotificationVisibility.Private 보안 잠금 화면 (예: 알림 아이콘 및 게시 된 앱의 이름)에만 필수 정보를 표시 하지만 나머지 알림의 세부 정보는 숨겨집니다.NotificationVisibility.Private – Only essential information is displayed on the secure lock screen (such as the notification icon and the name of the app that posted it), but the rest of the notification's details are hidden. 모든 알림은 기본적으로 NotificationVisibility.Private입니다.All notifications default to NotificationVisibility.Private.

  • NotificationVisibility.Secret – 알림 아이콘이 아니라 보안 잠금 화면에 아무 것도 표시 되지 않습니다.NotificationVisibility.Secret – Nothing is displayed on the secure lock screen, not even the notification icon. 알림 콘텐츠는 사용자가 장치를 잠금 해제 한 후에만 사용할 수 있습니다.The notification content is available only after the user unlocks the device.

알림 표시 여부를 설정 하기 위해 앱은 표시 유형 설정을 전달 하 여 NotificationCompat.Builder 개체의 SetVisibility 메서드를 호출 합니다.To set the visibility of a notification, apps call the SetVisibility method of the NotificationCompat.Builder object, passing in the visibility setting. 예를 들어 SetVisibility에 대 한이 호출을 수행 하면 알림이 Private됩니다.For example, this call to SetVisibility makes the notification Private:

builder.SetVisibility (NotificationVisibility.Private);

Private 알림이 게시 되 면 앱의 이름과 아이콘만 보안 잠금 화면에 표시 됩니다.When a Private notification is posted, only the name and icon of the app is displayed on the secure lock screen. 사용자는 알림 메시지 대신 "이 알림을 볼 수 있도록 장치 잠금 해제"를 확인 합니다.Instead of the notification message, the user sees "Unlock your device to see this notification":

장치 알림 메시지 잠금 해제

이 예제에서 Notificationslab 래 브 는 원래 앱의 이름입니다.In this example, NotificationsLab is the name of the originating app. 이 교정 된 버전의 알림은 잠금 화면이 안전 하 게 보호 되는 경우 (즉, 고정, 패턴 또는 암호를 통해 보호 됨 –)에만 표시 됩니다. 잠금 화면에 보안이 설정 되어 있지 않으면 잠금 화면에서 알림의 전체 콘텐츠를 사용할 수 있습니다.This redacted version of the notification appears only when the Lock screen is secure (i.e., secured via PIN, pattern, or password) – if the lock screen is not secure, the full content of the notification is available on the lock screen.

범주 설정Category settings

Android 5.0 부터는 미리 정의 된 범주를 순위 및 필터링 알림에 사용할 수 있습니다.Beginning with Android 5.0, predefined categories are available for ranking and filtering notifications. Xamarin Android는 이러한 범주에 대해 다음과 같은 열거형을 제공 합니다.Xamarin.Android provides the following enumerations for these categories:

  • Notification.CategoryCall – 들어오는 전화 통화입니다.Notification.CategoryCall – Incoming phone call.

  • 들어오는 문자 메시지를 – Notification.CategoryMessage.Notification.CategoryMessage – Incoming text message.

  • Notification.CategoryAlarm 경보 조건 또는 타이머 만료 – 합니다.Notification.CategoryAlarm – An alarm condition or timer expiration.

  • 들어오는 전자 메일 메시지를 – Notification.CategoryEmail.Notification.CategoryEmail – Incoming email message.

  • Notification.CategoryEvent – 일정 이벤트입니다.Notification.CategoryEvent – A calendar event.

  • 프로 모션 메시지 또는 광고를 – Notification.CategoryPromo.Notification.CategoryPromo – A promotional message or advertisement.

  • Notification.CategoryProgress 백그라운드 작업의 진행 상황을 – 합니다.Notification.CategoryProgress – The progress of a background operation.

  • 소셜 네트워킹 업데이트를 – Notification.CategorySocial 합니다.Notification.CategorySocial – Social networking update.

  • 백그라운드 작업이 나 인증 프로세스의 – 실패를 Notification.CategoryError 합니다.Notification.CategoryError – Failure of a background operation or authentication process.

  • 미디어 재생 업데이트를 – Notification.CategoryTransport.Notification.CategoryTransport – Media playback update.

  • 시스템 사용을 위해 예약 된 Notification.CategorySystem – (시스템 또는 장치 상태).Notification.CategorySystem – Reserved for system use (system or device status).

  • Notification.CategoryService – 백그라운드 서비스가 실행 중임을 나타냅니다.Notification.CategoryService – Indicates that a background service is running.

  • Notification.CategoryRecommendation 현재 실행 중인 앱과 관련 된 권장 사항 메시지를 – 합니다.Notification.CategoryRecommendation – A recommendation message related to the currently running app.

  • 장치에 대 한 – 정보를 Notification.CategoryStatus 합니다.Notification.CategoryStatus – Information about the device.

알림이 정렬 되 면 알림 우선 순위가 해당 범주 설정 보다 우선 적용 됩니다.When notifications are sorted, the notification's priority takes precedence over its category setting. 예를 들어 우선 순위가 높은 알림은 Promo 범주에 속한 경우에도 준비로 표시 됩니다.For example, a high-priority notification will be displayed as Heads-up even if it belongs to the Promo category. 알림의 범주를 설정 하려면 NotificationCompat.Builder 개체의 SetCategory 메서드를 호출 하 여 범주 설정을 전달 합니다.To set the category of a notification, you call the SetCategory method of the NotificationCompat.Builder object, passing in the category setting. 예를 들어:For example:

builder.SetCategory (Notification.CategoryCall);

사용 안 함 기능 (Android 5.0의 새로운 기능)은 범주를 기반으로 알림을 필터링 합니다.The Do not disturb feature (new in Android 5.0) filters notifications based on categories. 예를 들어 설정방해 금지 화면에서 사용자는 전화 통화 및 메시지에 대 한 알림을 제외할 수 있습니다.For example, the Do not disturb screen in Settings allows the user to exempt notifications for phone calls and messages:

화면 스위치를 방해 하지 않음

위의 스크린샷에 나와 있는 것 처럼 사용자가 전화 통화를 제외 하 고 모든 인터럽트를 차단 하도록 방해 금지를 구성 하는 경우, Android에서 장치가 방해 금지 상태인 동안 범주 설정이 Notification.CategoryCall 인 알림이 표시 되도록 허용 합니다.모드.When the user configures Do not disturb to block all interrupts except for phone calls (as illustrated in the above screenshot), Android allows notifications with a category setting of Notification.CategoryCall to be presented while the device is in Do not disturb mode. Notification.CategoryAlarm 알림은 방해 금지 모드에서 차단 되지 않습니다.Note that Notification.CategoryAlarm notifications are never blocked in Do not disturb mode.

Localnotifications 샘플은 NotificationCompat.Builder를 사용 하 여 알림에서 두 번째 활동을 시작 하는 방법을 보여 줍니다.The LocalNotifications sample demonstrates how to use NotificationCompat.Builder to launch a second activity from a notification. 이 샘플 코드는 xamarin.ios 연습의 로컬 알림 사용 에서 설명 합니다.This sample code is explained in the Using Local Notifications in Xamarin.Android walkthrough.

알림 스타일Notification styles

NotificationCompat.Builder를 사용 하 여 빅 텍스트, 이미지또는 수신함 스타일 알림을 만들려면 앱에서 이러한 스타일의 호환성 버전을 사용 해야 합니다.To create Big Text, Image, or Inbox style notifications with NotificationCompat.Builder, your app must use the compatibility versions of these styles. 예를 들어, 큰 텍스트 스타일을 사용 하려면 NotificationCompat.BigTextstyle를 인스턴스화합니다.For example, to use the Big Text style, instantiate NotificationCompat.BigTextstyle:

NotificationCompat.BigTextStyle textStyle = new NotificationCompat.BigTextStyle();

// Plug this style into the builder:
builder.SetStyle (textStyle);

마찬가지로 앱은 각각 받은 편지함이미지 스타일에 NotificationCompat.InboxStyleNotificationCompat.BigPictureStyle를 사용할 수 있습니다.Similarly, your app can use NotificationCompat.InboxStyle and NotificationCompat.BigPictureStyle for Inbox and Image styles, respectively.

알림 우선 순위 및 범주Notification priority and category

NotificationCompat.BuilderSetPriority 메서드 (Android 4.1부터 사용 가능)를 지원 합니다.NotificationCompat.Builder supports the SetPriority method (available starting with Android 4.1). 그러나 SetCategory 메서드는 NotificationCompat.Builder에서 지원 되지 않습니다 . 범주는 Android 5.0에 도입 된 새 알림 메타 데이터 시스템의 일부 이기 때문입니다.However, the SetCategory method is not supported by NotificationCompat.Builder because categories are part of the new notification metadata system that was introduced in Android 5.0.

SetCategory를 사용할 수 없는 이전 버전의 Android를 지원 하려면 API 수준이 Android 5.0 (API 레벨 21) 보다 크거나 같은 경우 코드에서 런타임에 API 수준을 검사 하 여 SetCategory 조건부로 호출할 수 있습니다.To support older versions of Android, where SetCategory is not available, your code can check the API level at runtime to conditionally call SetCategory when the API level is equal to or greater than Android 5.0 (API level 21):

if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) {
    builder.SetCategory (Notification.CategoryEmail);
}

이 예제에서는 앱의 대상 프레임 워크가 android 5.0로 설정 되 고 최소 android 버전이 android 4.1 (API 수준 16) 로 설정 됩니다.In this example, the app's Target Framework is set to Android 5.0 and the Minimum Android Version is set to Android 4.1 (API Level 16). SetCategory는 API 수준 21 이상에서 사용할 수 있기 때문에이 예제 코드는 사용 가능한 경우에만 SetCategory를 호출 합니다. – API 수준이 21 보다 작은 경우 SetCategory를 호출 하지 않습니다.Because SetCategory is available in API level 21 and later, this example code will call SetCategory only when it is available – it will not call SetCategory when the API level is less than 21.

잠금 화면 표시 유형Lock screen visibility

Android 5.0 (API 레벨 21) 이전에는 Android 잠금 화면 알림을 지원 하지 않으므로 NotificationCompat.BuilderSetVisibility 방법을 지원 하지 않습니다.Because Android did not support lock screen notifications before Android 5.0 (API level 21), NotificationCompat.Builder does not support the SetVisibility method. SetCategory에 대해 위에서 설명한 것 처럼 코드는 런타임에 API 수준을 확인 하 고 사용 가능한 경우에만 SetVisiblity를 호출할 수 있습니다.As explained above for SetCategory, your code can check the API level at runtime and call SetVisiblity only when it is available:

if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.Lollipop) {
    builder.SetVisibility (Notification.Public);
}

요약Summary

이 문서에서는 Android에서 로컬 알림을 만드는 방법을 설명 했습니다.This article explained how to create local notifications in Android. 알림 분석에 대해 설명 하 고, NotificationCompat.Builder를 사용 하 여 알림을 만드는 방법, 큰 아이콘의 알림 스타일 지정 방법, 빅 텍스트, 이미지수신함 형식, 등의 알림 메타 데이터 설정을 설정 하는 방법에 대해 설명 했습니다. 우선 순위, 표시 유형 및 범주와 알림에서 작업을 시작 하는 방법을 설명 합니다.It described the anatomy of a notification, it explained how to use NotificationCompat.Builder to create notifications, how to style notifications in large icon, Big Text, Image and Inbox formats, how to set notification metadata settings such as priority, visibility, and category, and how to launch an activity from a notification. 또한이 문서에서는 Android 5.0에 도입 된 새로운 준비, 잠금 화면 및 방해 금지 기능에서 이러한 알림 설정이 작동 하는 방식을 설명 했습니다.This article also described how these notification settings work with the new Heads-up, lock screen, and Do not disturb features introduced in Android 5.0. 마지막으로 NotificationCompat.Builder를 사용 하 여 이전 버전의 Android와의 호환성을 유지 하는 방법을 배웠습니다.Finally, you learned how to use NotificationCompat.Builder to maintain notification compatibility with earlier versions of Android.

Android에 대 한 알림을 디자인 하는 방법에 대 한 지침은 알림을 참조 하세요.For guidelines about designing notifications for Android, see Notifications.