Xamarin의 사전 예방적 제안 watchOSwatchOS Proactive Suggestions in Xamarin

이 문서에서는 watchOS 3 앱에서 자동 관리 제안을 사용 하 여 시스템에서 자동으로 유용한 정보를 사용자에 게 자동으로 제공할 수 있도록 하 여 engagement를 구동 하는 방법을 보여 줍니다.This article shows how to use Proactive Suggestions in a watchOS 3 app to drive engagement by allowing the system to proactively present helpful information automatically to the user.

WatchOS 3을 처음 사용 하는 경우 자동으로 사용자에 게 유용한 정보를 사용자에 게 자동으로 제공 하 여 사용자가 Xamarin.ios 앱에 참여할 수 있는 뉴스 방법을 제공 합니다.New to watchOS 3, Proactive Suggestions present news ways for users to engage with a Xamarin.iOS app by proactively present helpful information automatically to the user at appropriate times.

자동 관리 제안 정보About Proactive Suggestions

WatchOS 3의 새로운 기능으로 NSUserActivity에는 앱이 다른 컨텍스트에서 사용할 수 있는 위치 정보를 제공할 수 있도록 하는 MapItem 속성이 포함 되어 있습니다.New to watchOS 3, NSUserActivity includes a MapItem property that allows the app to provide location information that can be used in other contexts. 예를 들어 호텔에 표시 된 앱이 MapItem 위치를 검토 하 고 제공 하는 경우 사용자가 Maps 앱으로 전환 하는 경우 보기만 하는 호텔의 위치를 사용할 수 있습니다.For example, if the app displayed hotel reviews and provides a MapItem location, if the user switched to the Maps app, the location of the hotel they were just viewing would be available.

앱은 NSUserActivity, MapKit, Media Player 및 UIKit와 같은 기술 컬렉션을 사용 하 여 시스템에이 기능을 노출 합니다.The app exposes this functionality to the system using a collection of technologies such as NSUserActivity, MapKit, Media Player and UIKit. 또한 앱에 대 한 사전 제안 지원을 제공 하 여 더 심층적인 Siri 통합을 무료로 제공 합니다.Additionally, by providing Proactive Suggestion support for the app, it gets deeper Siri integration for free.

위치 기반 제안Location Based Suggestions

WatchOS 3의 새로운 기능으로, NSUserActivity 클래스에는 개발자가 다른 컨텍스트에서 사용할 수 있는 위치 정보를 제공할 수 있는 MapItem 속성이 포함 되어 있습니다.New to watchOS 3, the NSUserActivity class includes a MapItem property that allows the developer to provide location information that can be used in other contexts. 예를 들어 앱에서 식당 리뷰를 표시 하는 경우 개발자는 사용자가 앱에서 보고 있는 식당의 위치로 MapItem 속성을 설정할 수 있습니다.For example, if the app displays restaurant reviews, the developer can set the MapItem property to the location of the restaurant that the user is viewing in the app. 사용자가 Maps 앱으로 전환 하는 경우 식당의 위치를 자동으로 사용할 수 있습니다.If the user switches to the Maps app, the restaurant's location is automatically available.

앱이 앱 검색을 지 원하는 경우 CSSearchableItemAttributesSet 클래스의 새 주소 구성 요소를 사용 하 여 사용자가 방문할 수 있는 위치를 지정할 수 있습니다.If the app supports App Search, it can use the new address components of the CSSearchableItemAttributesSet class to specify locations that the user may want to visit. MapItem 속성을 설정 하 여 다른 속성이 자동으로 채워집니다.By setting the MapItem property, the other properties are automatically filled-in.

주소 구성 요소 속성의 LatitudeLongitude를 설정 하는 것 외에도 앱에서 NamedLocationPhoneNumbers 속성을 제공 하는 것이 좋습니다. 그러면 Siri가 해당 위치에 대 한 호출을 시작할 수 있습니다.In addition to setting the Latitude and Longitude of the address component properties, it is recommended that the app supply the NamedLocation and PhoneNumbers properties too, so Siri can initiate a call to the location.

상황별 Siri 미리 알림Contextual Siri Reminders

사용자가 Siri를 사용 하 여 나중에 앱에서 현재 보고 있는 콘텐츠를 확인 하는 미리 알림을 신속 하 게 만들 수 있습니다.Allows the user to use Siri to quickly make a reminder to view the content they are currently viewing in the app at a later date. 예를 들어 앱에서 식당 리뷰를 보고 있는 경우 Siri를 호출 하 고 "집에서이를 받을 때이에 대해 알림" 이라고 말할 수 있습니다.For example, if they were viewing a restaurant review in the app, they could invoke Siri and say "Remind me about this when I get home." Siri는 앱의 검토에 대 한 링크가 포함 된 미리 알림을 생성 합니다.Siri would generate the reminder with a link to the review in the app.

자동 관리 제안 구현Implementing Proactive Suggestions

Xamarin.ios 앱에 사전 제안 지원을 추가 하는 것은 일반적으로 몇 가지 Api를 구현 하거나 앱이 이미 구현할 수 있는 몇 가지 Api를 확장 하는 것 만큼 쉽습니다.Adding Proactive Suggestion support to the Xamarin.iOS app is typically as easy as implementing a few APIs or expanding on a few APIs that the app might already be implementing.

사전 권장 사항은 다음과 같은 세 가지 주요 방법으로 앱과 함께 작동 합니다.Proactive Suggestions work with the apps in three main ways:

  • NSUserActivity -시스템에서 사용자가 현재 화면에서 작업 하 고 있는 정보를 이해 하는 데 도움이 됩니다.NSUserActivity - Helps the system understand what information the user is currently working with on screen.
  • 위치 제안 -앱에서 위치 기반 정보를 제공 하거나 사용 하는 경우 이러한 API 확장을 통해 앱 간에이 정보를 공유할 수 있는 새로운 방법을 제공 합니다.Location Suggestions - If the app offers or consumes location based information, these API extension offer new ways to share this information across apps.

및은 다음을 구현 하 여 앱에서 지원 됩니다.And is supported in the app by implementing the following:

  • 상황별 Siri 미리 알림 -iOS 10에서는 siri가 나중에 앱에서 현재 보고 있는 콘텐츠를 보기 위해 신속 하 게 미리 알림을 만들 수 있도록 NSUserActivity 확장 되었습니다.Contextual Siri Reminders - In iOS 10, NSUserActivity has been expanded to allow Siri to quickly make a reminder to view the content they are currently viewing in the app at a later date.
  • 위치 제안 -iOS 10은 앱 내부에 표시 되는 위치를 캡처하고 시스템 전체의 여러 위치에서 수준을 올리는 NSUserActivity 향상 됩니다.Location Suggestions - iOS 10 enhances NSUserActivity to capture locations viewed inside of the app and promote them in many places throughout the system.
  • 상황별 Siri 요청 은 사용자가 지침을 얻거나 앱 내에서 siri를 호출 하는 호출을 수행할 수 있도록 앱 내부에서 siri에 게 제공 된 정보에 대 한 컨텍스트를 제공NSUserActivity - 합니다.Contextual Siri Requests - NSUserActivity provides context to the information presented inside of the app to Siri so that the user can get directions or place a call be invoking Siri from within the app.

이러한 모든 기능에는 공통적으로 한 가지 형식이 있으며, 모든 기능을 사용 하 여 해당 기능을 제공 하는 NSUserActivity.All of these features have one thing in common, they all use NSUserActivity in one form or another to provide their functionality.

NSUserActivityNSUserActivity

위에서 설명한 것 처럼 NSUserActivity는 시스템에서 사용자가 현재 화면에서 작업 하 고 있는 정보를 이해 하는 데 도움이 됩니다.As stated above, NSUserActivity helps the system understand what information the user is currently working with on screen. NSUserActivity은 사용자가 앱을 탐색할 때 사용자의 작업을 캡처하는 경량 상태 캐싱 메커니즘입니다.NSUserActivity is a light-weight state caching mechanism to capture the user's activity as they navigate through the app. 예를 들어 식당 앱을 살펴보면 다음과 같습니다.For example, looking at the restaurant app:

다음과 같은 상호 작용을 사용 합니다.With the following interactions:

  1. 사용자가 앱에서 작업할 때 나중에 앱의 상태를 다시 만들기 위해 NSUserActivity 만들어집니다.As the user works with the app, a NSUserActivity is created to recreate the state of the app later.
  2. 사용자가 식당을 검색 하는 경우 동일한 유형의 활동을 만듭니다.If the user searches for a restaurant, the same pattern of creating activities is followed.
  3. 그리고 사용자가 결과를 볼 때를 다시 사용 합니다.And again, when the user views a result. 이 마지막 사례에서 사용자는 위치를 보고 iOS 10에서는 특정 개념 (예: 위치 또는 통신 상호 작용)을 더 잘 인식 합니다.In this last case, the user is viewing a location and in iOS 10, the system is more aware of certain concepts (such as location or communication interactions).

마지막 화면을 자세히 살펴보겠습니다.Take a closer look at the last screen:

여기서 앱은 NSUserActivity를 만들고 나중에 상태를 다시 만들기 위한 정보로 채워져 있습니다.Here the app is creating a NSUserActivity and it has been populated with information to recreate the state later. 앱에는 위치 이름 및 주소와 같은 메타 데이터도 포함 되어 있습니다.The app has also included some metadata such as the location's name and address. 이 활동을 만든 후 앱에서 iOS에서 사용자의 현재 상태를 나타내는지 알 수 있습니다.With this activity created, the app lets iOS know that it represents the user's current state.

그런 다음 앱은 위치 제안에 대 한 임시 값으로 저장 되거나, 검색 결과에 표시 하기 위해 장치에서 스포트라이트 인덱스에 추가 되는 활동을 무선으로 알릴지 여부를 결정 합니다.The app then decides if the activity will be advertised over-the-air for Handoff, saved as a temporary value for location suggestions or added to the on-device Spotlight index for displaying in search results.

핸드 오프 및 스포트라이트 검색에 대 한 자세한 내용은 전달 소개IOS 9 새 검색 api 가이드를 참조 하세요.For more information on Handoff and Spotlight search, please see our Introduction to Handoff and iOS 9 New Search APIs guides.

활동 만들기Creating an Activity

활동을 만들기 전에 활동 유형 식별자를 생성 하 여 해당 활동을 식별 해야 합니다.Before creating an Activity, an Activity Type Identifier will needed to be created to identify it. 활동 유형 식별자는 지정 된 사용자 활동 유형을 고유 하 게 식별 하는 데 사용 되는 앱 Info.plist 파일의 NSUserActivityTypes 배열에 추가 된 짧은 문자열입니다.The Activity Type Identifier is a short string added to the NSUserActivityTypes array of the app's Info.plist file used to uniquely identify a given User Activity Type. 앱이 지원 하 고 앱 검색에 노출 하는 각 작업에 대해 배열에 하나의 항목이 있습니다.There will be one entry in the array for each activity that the app supports and exposes to App Search. 자세한 내용은 활동 형식 식별자 참조 만들기 를 참조 하세요.See our Creating Activity Type Identifiers Reference for more details.

활동의 예를 살펴보세요.Look at an example of an activity:

// Create App Activity
var activity = new NSUserActivity ("com.xamarin.platform");

// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));

// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;

// Enable capabilities
activity.EligibleForSearch = true;
activity.EligibleForHandoff = true;
activity.EligibleForPublicIndexing = true;

// Inform system of Activity
activity.BecomeCurrent();

활동 형식 식별자를 사용 하 여 새 활동을 만듭니다.A new activity is created using an Activity Type Identifier. 그런 다음 작업을 정의 하는 일부 메타 데이터가 생성 되므로 나중에이 상태를 복원할 수 있습니다.Next, some metadata defining the activity is created so this state can be restored at a later date. 그러면 활동에 의미 있는 제목이 지정 되 고 사용자 정보에 연결 됩니다.Then, the activity is given a meaningful title and attached to the user info. 마지막으로 일부 기능은 사용 하도록 설정 되 고 작업은 시스템으로 전송 됩니다.Finally, some capabilities are enabled and the activity is sent to the system.

위의 코드를 다음과 같이 변경 하 여 활동에 컨텍스트를 제공 하는 메타 데이터를 포함 하도록 추가로 향상 시킬 수 있습니다.The code above could further be enhanced to include metadata that provides context to the activity by making the following changes:

...

// Provide context
var attributes = new CSSearchableItemAttributeSet ("com.xamarin.location");
attributes.ThumbnailUrl = myThumbnailURL;
attributes.Keywords = new string [] { "software", "mobile", "language" }; 
activity.ContentAttributeSet = attributes;

// Inform system of Activity
activity.BecomeCurrent();

개발자에 게 앱과 동일한 정보를 표시할 수 있는 웹 사이트가 있는 경우 앱은 URL을 포함할 수 있으며 앱이 설치 되지 않은 다른 장치 (전달을 통해)에 콘텐츠가 표시 될 수 있습니다.If the developer has a website that is capable of displaying the same information as the app, the app can include the URL and the content can be displayed on other devices that don't have the app installed (via Handoff):

// Restore on the web
activity.WebPageUrl = new NSUrl("http://xamarin.com/platform");

활동 복원Restoring an Activity

앱에 대 한 검색 결과 (NSUserActivity)를 누르는 사용자에 게 응답 하려면 AppDelegate.cs 파일을 편집 하 고 ContinueUserActivity 메서드를 재정의 합니다.To respond to the user tapping on a search result (NSUserActivity) for the app, edit the AppDelegate.cs file and override the ContinueUserActivity method. 예를 들면,For example:

public override bool ContinueUserActivity (UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
{

    // Take action based on the activity type
    switch (userActivity.ActivityType) {
    case "com.xamarin.platform":
        // Restore the state of the app here...
        break;
    }

    return true;
}

위에서 만든 활동과 동일한 활동 유형 식별자 (com.xamarin.platform) 인지 확인 합니다.Ensure this is the same Activity Type Identifier (com.xamarin.platform) as the activity created above. 앱은 NSUserActivity에 저장 된 정보를 사용 하 여 사용자가 남은 위치로 상태를 다시 복원 합니다.The app uses the information stored in the NSUserActivity to restore the state back to where the user left off.

활동을 만들 때의 이점Benefits of Creating an Activity

앱은 위에 표시 된 최소한의 코드를 사용 하 여 다음과 같은 세 가지 새로운 iOS 10 기능을 활용할 수 있습니다.With the minimal amount of code presented above, the app is now able to take advantage of three new iOS 10 features:

  • HandoffHandoff
  • 스포트라이트 검색Spotlight Search
  • 상황별 Siri 미리 알림Contextual Siri Reminders

다음 섹션에서는 두 가지 다른 새로운 iOS 10 기능을 사용 하도록 설정 하는 방법을 살펴봅니다.The following section will take a look at enabling two other new iOS 10 features:

  • 위치 제안Location Suggestions
  • 컨텍스트 Siri 요청Contextual Siri Requests

위치 기반 제안Location Based Suggestions

위의 식당 검색 앱 예제를 예로 들어 보겠습니다.Take the example of the restaurant search app above. NSUserActivity를 구현 하 고 모든 메타 데이터와 특성을 올바르게 채우면 사용자가 다음을 수행할 수 있습니다.If it has implemented NSUserActivity and correctly populated all of the metadata and attributes, the user would be able to do the following:

  1. 앱에서 친구를 충족 하고자 하는 식당을 찾습니다.Find a restaurant in the app that they would like to meet a friend at.
  2. 사용자가 Maps 앱으로 전환 하는 경우 식당의 주소가 자동으로 대상으로 제안 됩니다.If the user switches to the Maps app, the restaurant's address is automatically suggested as a destination.
  3. 이는 타사 앱 (NSUserActivity지원) 에서도 작동 하므로 사용자는이를 통해 사용자가 타는 공유 앱으로 전환할 수 있으며 식당의 주소도 자동으로 대상으로 제안 됩니다.This even works for 3rd Party apps (that support NSUserActivity), so the user can switch to a ride-sharing app and the restaurant's address is automatically suggested as a destination there as well.
  4. 또한 Siri에 대 한 컨텍스트를 제공 하므로 사용자는 식당 앱 내에서 Siri를 호출 하 고 "방향 가져오기 ..." 를 요청 하 고 siri는 사용자가 보고 있는 식당에 방향을 제공 합니다.It also provides context to Siri, so the user can invoke Siri within the restaurant app and ask "Get directions..." and Siri will provide directions to the restaurant the user is viewing.

위의 모든 기능에는 공통적인 내용이 하나 있으며,이는 모두 제안 내용이 원래 제공 되는 위치를 표시 합니다.All of the above functionality has one thing in common, they all indicate where the suggestion is originally coming from. 위의 예에서는 가상의 식당 리뷰 앱입니다.In the case of the example above, it's the fictitious restaurant review app.

watchOS 3은 몇 가지 작은 수정과 기존 프레임 워크에 대 한 추가 기능을 통해 앱에서이 기능을 사용할 수 있도록 향상 되었습니다.watchOS 3 has been enhanced to enable this functionality for an app through several small modifications and additions to existing frameworks:

  • NSUserActivity에는 앱 내에서 볼 수 있는 위치 정보를 캡처하기 위한 추가 필드가 있습니다.NSUserActivity has additional fields for capturing location information that is viewed inside of the app.
  • MapKit 및 CoreSpotlight location에 대 한 몇 가지 추가 기능이 추가 되었습니다.Several additions have been made to MapKit and CoreSpotlight to capture location.
  • 위치 인식 기능이 시스템 내의 Siri, Maps, 멀티태스킹 및 기타 앱에 추가 되었습니다.Location aware functionality has been added to Siri, Maps, Multitasking and other apps within the system.

위치 기반 제안을 구현 하려면 위에서 설명한 것과 동일한 활동 코드를 사용 하 여 시작 합니다.To implement location based suggestions, start with the same activity code presented above:

// Create App Activity
var activity = new NSUserActivity ("com.xamarin.platform");

// Define details
var info = new NSMutableDictionary ();
info.Add(new NSString("link"),new NSString("http://xamarin.com/platform"));

// Populate Activity
activity.Title = "The Xamarin Platform";
activity.UserInfo = info;

// Enable capabilities
activity.EligibleForSearch = true;
activity.EligibleForHandoff = true;
activity.EligibleForPublicIndexing = true;

// Provide context
var attributes = new CSSearchableItemAttributeSet ("com.xamarin.location");
attributes.ThumbnailUrl = myThumbnailURL;
attributes.Keywords = new string [] { "software", "mobile", "language" }; 
activity.ContentAttributeSet = attributes;

// Restore on the web
activity.WebPageUrl = new NSUrl("http://xamarin.com/platform");

// Inform system of Activity
activity.BecomeCurrent();

앱이 MapKit를 사용 하는 경우 현재 지도 MKMapItem를 활동에 추가 하는 것 만큼 간단 합니다.If the app is using MapKit, it is as simple as adding the current map MKMapItem to the activity:

// Save MKMapItem location
activity.MapItem = myMapItem;

앱이 MapKit를 사용 하지 않는 경우 앱 검색을 채택 하 고 위치에 대해 다음과 같은 새 특성을 지정할 수 있습니다.If the app isn't using MapKit, it can adopt App Search and specify the following new attributes for location:

// Provide context
var attributes = new CSSearchableItemAttributeSet ("com.xamarin.location");
...

attributes.NamedLocation = "Apple Inc.";
attributes.SubThoroughfare = "1";
attributes.Thoroughfare = "Infinite Loop";
attributes.City = "Cupertino";
attributes.StateOrProvince = "CA";
attributes.Country = "United States";
attributes.Latitude = 37.33072;
attributes.Longitude = 122.029674;
attributes.PhoneNumbers = new string[]{"(800) 275-2273"};
attributes.SupportsPhoneCalls = true;
attributes.SupportsNavigation = true;

위의 코드를 자세히 살펴보세요.Take a look at the above code in detail. 먼저, 위치 이름은 모든 인스턴스에서 필요 합니다.First, the name of the location is required in every instance:

attributes.NamedLocation = "Apple Inc.";

텍스트 기반 인스턴스에 필요한 텍스트 기반 설명 (예: QuickType 키보드):Then, the text based description in required for text based instances (such as the QuickType keyboard):

attributes.SubThoroughfare = "1";
attributes.Thoroughfare = "Infinite Loop";
attributes.City = "Cupertino";
attributes.StateOrProvince = "CA";
attributes.Country = "United States";

위도 및 경도는 선택 사항 이지만, 사용자가 앱이 보내려는 정확한 위치로 라우팅됩니다.The latitude and longitude are optional, but ensure that the user is routed to the exact location the app is wanting to send them to:

attributes.Latitude = 37.33072;
attributes.Longitude = 122.029674;

전화 번호를 설정 하 여 앱은 Siri에 대 한 액세스 권한을 얻을 수 있으므로 사용자가 앱에서 Siri를 호출할 수 있습니다 (예: * "이 위치 호출").By setting the phone numbers, the app can gain access to Siri so the user can invoke Siri from the app by saying something like, *"Call this place":

attributes.PhoneNumbers = new string[]{"(800) 275-2273"};

마지막으로 앱은 인스턴스가 탐색 및 전화 통화에 적합 한지 여부를 나타낼 수 있습니다.Finally, the app can indicate if the instance is suitable for navigation and phone calls:

attributes.SupportsPhoneCalls = true;
attributes.SupportsNavigation = true;

활동 모범 사례Activities Best Practices

Apple은 활동 작업을 수행할 때 다음과 같은 모범 사례를 제안 합니다.Apple suggests the following best practices when working with activities:

  • 지연 페이로드 업데이트에 NeedsSave를 사용 합니다.Use NeedsSave for lazy payload updates.
  • 현재 활동에 대 한 강력한 참조를 유지 해야 합니다.Ensure to keep a strong reference to the current activity.
  • 상태를 복원 하는 데 충분 한 정보만 포함 하는 작은 페이로드를 전송 합니다.Only transfer small payloads that include just enough information to restore the state.
  • 활동 유형 식별자가 고유한 지 확인 하 고 역방향 DNS 표기법을 사용 하 여 지정 합니다.Ensure that the Activity Type Identifiers are unique and descriptive by using reverse-DNS notation to specify them.

위치 제안 사용Consuming Location Suggestions

다음 섹션에서는 시스템의 다른 부분 (예: 맵 앱) 또는 기타 타사 앱에서 제공 하는 위치 제안을 다룹니다.This next section will cover consuming Location Suggestion that have come from other parts of the system (such as the Maps app) or other 3rd party apps.

라우팅 앱 및 위치 제안Routing Apps and Locations Suggestions

이 섹션에서는 라우팅 앱 내에서 직접 위치 제안을 사용 하는 방법을 살펴봅니다.This section will take a look at consuming Location Suggestions directly from within a routing app. 이 기능을 추가 하기 위한 라우팅 앱의 경우 개발자는 기존 MKDirectionsRequest 프레임 워크를 다음과 같이 활용 합니다.For the routing app to add this functionality, the developer will leverage the existing MKDirectionsRequest framework as follows:

  • 멀티태스킹에서 앱을 승격 합니다.To promote the app in Multitasking.
  • 앱을 라우팅 앱으로 등록 합니다.To register the app as a routing app.
  • MapKit MKDirectionsRequest 개체를 사용 하 여 앱을 시작 하는 것을 처리 합니다.To handle launching the app with a MapKit MKDirectionsRequest object.
  • 사용자 참여를 기준으로 앱을 제안 하는 방법에 대 한 watchOS을 제공 합니다.Give watchOS the ability to learn to suggest the app based on user engagement.

응용 프로그램은 MapKit MKDirectionsRequest 개체를 사용 하 여 시작 될 때 사용자에 게 요청 된 위치에 대 한 지침을 자동으로 제공 하거나 사용자가 쉽게 지침을 얻을 수 있도록 UI를 제공 해야 합니다.When the app is started with a MapKit MKDirectionsRequest object, it should automatically start giving the user directions to the requested location, or present a UI that makes it easy for the user to start getting directions. 예를 들면,For example:

using System;
using Foundation;
using UIKit;
using MapKit;
using CoreLocation;

namespace MonkeyChat
{
    [Register ("AppDelegate")]
    public class AppDelegate : UIApplicationDelegate, IUISplitViewControllerDelegate
    {
        ...

        public override bool OpenUrl (UIApplication app, NSUrl url, NSDictionary options)
        {
            if (MKDirectionsRequest.IsDirectionsRequestUrl (url)) {
                var request = new MKDirectionsRequest (url);
                var coordinate = request.Destination?.Placemark.Location?.Coordinate;
                var address = request.Destination.Placemark.AddressDictionary;
                if (coordinate.IsValid()) {
                    var geocoder = new CLGeocoder ();
                    geocoder.GeocodeAddress (address, (place, err) => {
                        // Handle the display of the address

                    });
                }
            }

            return true;
        }
    }
}

이 코드에 대 한 자세한 내용을 살펴보세요.Take a look at this code in detail. 올바른 대상 요청 인지 테스트 합니다.It tests to see if it is a valid destination request:

if (MKDirectionsRequest.IsDirectionsRequestUrl(url)) {

인 경우 URL에서 MKDirectionsRequest를 만듭니다.If it is, then it creates a MKDirectionsRequest from the URL:

var request = new MKDirectionsRequest(url);

WatchOS 3의 새로운 기능으로, 지역 좌표가 없는 주소를 앱에 전송할 수 있습니다. 그러면 개발자가 주소를 인코딩해야 합니다.New in watchOS 3, the app can be sent an address that does not have geo-coordinates, in that cause the developer needs to encode the address:

var geocoder = new CLGeocoder();
geocoder.GeocodeAddress(address, (place, err)=> {
    // Handle the display of the address

});

요약Summary

이 문서에서는 사전 권장 사항에 대해 설명 하 고 개발자가 watchOS 앱에 대 한 트래픽을 구동 하는 데 사용할 수 있는 방법을 보여 주었습니다.This article has covered Proactive Suggestions and showed how the developer can use them to drive traffic to a Xamarin.iOS app for watchOS. 사전 제안 및 제시 된 사용 지침을 구현 하는 단계를 설명 했습니다.It covered the step to implement Proactive Suggestions and presented usage guidelines.