Alterações adicionais nas estruturas do iOS 9

Este artigo aborda alterações ou aprimoramentos adicionais e menores nas estruturas existentes para o iOS 9.

Logotipo do iOS 9

Além das grandes mudanças no iOS, a Apple fez modificações e melhorias em várias estruturas existentes no iOS 9.

Adições do AVFoundation Framework

Na estrutura AVFoundation, a classe AVSpeechSynthesisVoice agora permite que você especifique uma voz por identificador, além do idioma.

Por exemplo, o código a seguir obtém uma lista de todas as vozes disponíveis:

var voices = AVSpeechSynthesisVoice.GetSpeechVoices ();

Em seguida, você pode usar uma das vozes da lista definindo-a como a Voice propriedade de uma instância da classe AVSpeachUtterance .

A classe AVQueuePlayer agora oferece suporte a uma mistura de streaming da Internet e mídia baseada em arquivo na fila. As versões anteriores só podiam enfileirar mídia do mesmo tipo.

Para obter mais informações, consulte a referência AVSpeechSynthesisVoice da Apple.

Adições do AVKit Framework

Para trabalhar com o novo recurso Picture-in-Picture (PIP), a estrutura AVKit inclui as classes new AVPictureInPictureController e AVPlayerViewController :

  • AVPictureInPictureController - Esta classe permite que um aplicativo iOS 9 responda ao usuário iniciando a reprodução de um vídeo em uma janela PIP flutuante e redimensionável em um iPad.
  • AVPlayerViewController - Gerencia um AVPlayer controlador usado para apresentar um vídeo em uma janela PIP flutuante e redimensionável em um iPad.

Para obter mais informações, consulte nossa documentação Multitarefa para iPad e a Referência AVPictureInPictureController e AVPlayerViewController da Apple.

Apresentando os serviços Web do CloudKit

A estrutura do CloudKit agiliza o desenvolvimento de aplicativos que acessam o iCloud. Isso inclui a recuperação de dados de aplicativos e direitos de ativos, além de ser capaz de armazenar informações de aplicativos com segurança. Este kit oferece aos usuários uma camada de anonimato, permitindo o acesso a aplicativos com seus IDs do iCloud sem compartilhar informações pessoais.

A nova estrutura de Serviços Web do CloudKit fornece uma biblioteca JavaScript (CloudKit JS) que pode ser incorporada ao seu site para fornecer acesso aos mesmos dados e conteúdo baseados no CloudKit que seu aplicativo Xamarin.iOS.

Importante

Antes de poder acessar, apresentar ou atualizar o conteúdo de um banco de dados do CloudKit usando o CloudKit JS, você deve ter definido previamente o esquema desse banco de dados.

Para obter mais informações, consulte os seguintes documentos:

Importante

A Apple fornece ferramentas para ajudar os desenvolvedores a lidar adequadamente com o GDPR (Regulamento Geral sobre a Proteção de Dados) da União Europeia.

Adições do Foundation Framework

A Apple incluiu as seguintes alterações na estrutura Foundation no iOS 9:

Alterações no NSBundle

As seguintes alterações foram feitas na classe NSBundle para iOS 9:

  • GetPreservationPriorityForTag (NSString tag) - Obtém a prioridade de preservação atual para recursos com a tag dada. Os valores válidos estão no intervalo 0.0 para 1.0, os recursos com a prioridade mais baixa serão limpos primeiro.
  • SetPreservationPriorityForTag (double priority, NSSet tags) - Define a prioridade de preservação atual para recursos com as tags dadas. Os valores válidos estão no intervalo 0.0 para 1.0, os recursos com a prioridade mais baixa serão limpos primeiro.

Para obter mais informações, consulte a Referência NSBundle da Apple.

Alterações no NSProcessInfo

Cada processo em execução em um dispositivo iOS tem um único Agente de Informações de Processo (PIA). Use a classe NSProcessInfo para fornecer informações sobre o PIA atual e controlar o gerenciamento térmico e de energia para um determinado processo.

Por exemplo, para controlar o encerramento automático de um processo, você pode usar o seguinte código:

// Disable automatic termination
var activity = NSProcessInfo.ProcessInfo.BeginActivity(NSActivityOptions.AutomaticTerminationDisabled, "Define reason for change here...");

// Perform the required task
...

// Return to normal operation
NSProcessInfo.ProcessInfo.EndActivity(activity);

Para obter mais informações, consulte a Referência NSProcessInfo da Apple.

Reagindo ao modo de baixa potência

Use a LowPowerModeEnabled propriedade da classe NSProcessInfo para determinar se o Modo de Baixo Consumo de Energia foi habilitado no dispositivo iOS no qual o aplicativo está sendo executado. Por exemplo:

// Is the device in low power mode?
if (NSProcessInfo.ProcessInfo.LowPowerModeEnabled) {
    // Reduce activity to conserve energy...
} else {
    // Return to normal activity...
}

Alterações na estrutura do HealthKit

A Apple incluiu as seguintes alterações na estrutura do HealthKit no iOS 9:

  • Suporte para exclusão em massa e controle de exclusão de entradas no banco de dados HealthKit. Consulte HKDeletedObject, HKAnchoredObjectQuery e HKHealthStore Class Reference da Apple para obter mais informações.
  • Novas categorias e características de rastreamento foram adicionadas à HKQuantityTypeIdentifier classe (como UVExposure) e à HKCategoryTypeIdentifier classe (como OvulationTestResult).

Consulte nossa documentação de Introdução ao HealthKit para obter mais informações sobre como trabalhar com o HealthKit no Xamarin.iOS.

Alterações na estrutura de autenticação local

A Apple incluiu as seguintes alterações na estrutura de autenticação local no iOS 9:

  • Usando os EvaluateAccessControl métodos e EvaluatePolicy da classe LAContext, agora você pode reutilizar correspondências do Touch ID de tentativas de desbloqueio bem-sucedidas anteriores.
  • A capacidade de obter uma lista de dedos atualmente registrados.
  • Suporte para rastreamento quando um dedo é adicionado ou removido da autenticação.
  • A capacidade de usar o Contexto de Autenticação em chamadas de Chaveiro e suporte para avaliar listas de controle de Acesso às Chaves.
  • A capacidade de cancelar um prompt do usuário a partir do código.

Para obter mais informações, consulte Touch ID e Face ID com Xamarin.iOS.

LAContext Alterações

As seguintes alterações foram feitas na classe LAContext para iOS 9:

  • TouchIdAuthenticationMaximumAllowableReuseDuration - Retorna a quantidade máxima de tempo que uma autenticação de ID de toque pode ser reutilizada.
  • EvaluatedPolicyDomainState - Obtém ou define o estado de uma política avaliada.
  • MaxBiometryFailures - Foi depreciado no iOS 9.
  • TouchIdAuthenticationAllowableReuseDuration Obtém ou define a quantidade de tempo que uma autenticação de ID de toque pode ser reutilizada.
  • EvaluateAccessControl - Avalia de forma assíncrona uma política de autenticação.
  • Invalidar - Invalida uma determinada autenticação de ID de toque.
  • IsCredentialSet - Retorna true se as credenciais estiverem definidas no momento.
  • SetCredentialType Define o tipo de credencial fornecido.

Consulte a Referência LAContext da Apple para obter mais detalhes.

Alterações na estrutura do MapKit

A Apple incluiu as seguintes alterações na estrutura MapKit no iOS 9:

  • O MapKit agora fornece suporte para iniciar o aplicativo Mapa diretamente em rotas de trânsito e para consultar o Tempo Estimado de Chegada (ETA) do trânsito usando as classes MKLaunchOptions e MKDirections .
  • Os resultados da pesquisa retornados pelo MapKit e pela classe CLGeocoder também podem fornecer o fuso horário do resultado.
  • Agora você pode personalizar totalmente as Anotações de Mapa apresentadas pelo seu aplicativo iOS usando a DetailCalloutAccessoryView propriedade da classe MKAnnotationView .

Consulte nossos Mapas do iOS e Passo a passo - Explorando anotações e sobreposições na documentação do MapKit para obter mais informações sobre como trabalhar com Mapas e Anotações no Xamarin.iOS e na Referência CLGeocoder da Apple para obter mais informações.

Adições do PassKit Framework

A Apple incluiu as seguintes alterações na estrutura do PassKit no iOS 9:

  • O Apple Pay agora é compatível com cartões de débito e crédito da loja, juntamente com os cartões Discover. Consulte a seção Redes de pagamento da Referência de classe PKPaymentRequest da Apple para obter mais informações.
  • Diretamente em um aplicativo Xamarin.iOS, agora você pode adicionar redes de pagamento e emissores de cartões ao Apple Pay. Consulte a Referência de classe PKAddPaymentPassViewController da Apple para obter mais detalhes.

Consulte nossa documentação de Introdução ao PassKit para obter mais informações sobre como trabalhar com o PassKit no Xamarin.iOS.

Adições da estrutura de serviços do Safari

A Apple incluiu as seguintes alterações na estrutura dos Serviços Safari no iOS 9:

  • Agora você pode usar a nova classe SFSafariViewController para exibir conteúdo da Web em um aplicativo Xamarin.iOS. Ele fornece a capacidade de compartilhar dados e cookies do site com o aplicativo Safari e inclui vários dos recursos do Safari (como Reader e AutoFill). O SFSafariViewController apresenta um botão Concluído que retornará os usuários ao seu aplicativo quando terminarem de exibir o conteúdo da Web.

Como a classe SFSafariViewController é personalizada para exibir uma única página de conteúdo da Web, você deve considerar usá-la para substituir quaisquer controles WKWebKit ou UIWebView em seus aplicativos Xamarin.iOS existentes.

Exibindo um site

O código abaixo é um exemplo de chamar um SFSafariViewController de dentro de outro controlador de exibição:

// Create an instance of the Safari Services View Controller
var controller = new SFSafariViewController(new NSUrl("http://www.xamarin.com"));

// Display website
PresentViewController(controller, true, null);

Alterações no UIKit Framework

A Apple incluiu muitas melhorias em vários elementos da estrutura UIKit para iOS 9. As seções a seguir detalharão essas alterações.

Eventos 3D Touch

Novo no iOS 9 e no iPhone 6s e iPhone 6s Plus, o 3D Touch adiciona gestos sensíveis à pressão aos seus aplicativos iOS. Como resultado, se o seu aplicativo estiver sendo executado no iOS 9 (ou superior) e o dispositivo iOS for capaz de suportar o 3D Touch, as mudanças na pressão farão com que o TouchesMoved evento seja aumentado.

Devido a essa mudança de comportamento, seus aplicativos iOS devem estar preparados para que o TouchesMoved evento seja invocado com mais frequência, mesmo que as coordenadas X/Y não tenham sido alteradas.

Para obter mais informações, consulte nosso guia de Introdução ao 3D Touch .

Funcionalidade de abertura de documentos no local

Usando os FinishedLaunching (application, launchOptions) métodos ou WillFinishLaunching (Application, launchOptions) da classe UIApplicationDelegate , agora você pode abrir um documento e modificá-lo no local (em vez de trabalhar em uma cópia).

Para oferecer suporte à nova funcionalidade aberta no local, adicione a LSSupportsOpeningDocumentsInPlace chave ao arquivo Info.plist do aplicativo Xamarin.iOS com o valor de YES.

Consulte a Referência UIApplicationDelegate da Apple para obter mais detalhes.

Eventos de toque aprimorados

A Apple forneceu várias melhorias para os Eventos de toque no iOS 9. Isso inclui a capacidade de usar a Previsão de Toque e obter acesso a toques intermediários entre as atualizações de exibição.

Consulte o Guia de Tratamento de Eventos da Apple para iOS para obter mais detalhes.

Buscando conteúdo personalizado

A nova NSDataAsset classe permite que um aplicativo Xamarin.iOS busque conteúdo adaptado aos recursos gráficos e de memória do dispositivo iOS em que está sendo executado no momento.

Novas âncoras de layout

As classes de âncora nova NSLayoutAnchor e NSLayoutDimension de layout funcionam com as novas propriedades de âncora da classe UIView (como LeadingAnchor e WidthAnchor) para facilitar o layout no iOS 9.

Consulte nossa documentação de Introdução aos Storyboards Unificados para obter mais informações sobre como trabalhar com AutoLayout e classes de tamanho em um aplicativo Xamarin.iOS e NSLayoutAnchor Reference da Apple, NSLayoutDimension Reference e UIView Reference para obter mais informações.

Novas margens de conteúdo legível

A nova UILayoutGuide classe pode ser usada para fornecer margens de conteúdo legíveis e definir as regiões de desenho para o conteúdo dentro de uma exibição. Consulte a Referência UILayoutGuide da Apple para obter mais informações.

Entrada de texto em modificações de notificações

A classe UIUserNotificationAction tem uma nova Behavior propriedade que pode ser usada para oferecer suporte à entrada de texto de notificações.

UIApplicationDelegate alterações

Embora não tenham sido formalmente preteridos pela Apple, eles sugerem substituir todas as chamadas para o FinishedLaunching (UIApplication application) método da classe UIApplicationDelegate pelos FinishedLaunching (UIApplication application, NSDictionary launchOptions) métodos ouWillFinishLaunching (UIApplication application, NSDictionary launchOptions).

Consulte a Referência UIApplicationDelegate da Apple para obter mais detalhes.

Alterações na dinâmica do UIKit

A Apple incluiu as seguintes alterações no UIKit Dynamics no iOS 9:

  • O Dynamics agora fornece suporte para limites de colisão não retangulares.
  • A nova classe personalizável UIFieldBehavior é usada para oferecer suporte a vários tipos de campo.
  • Tipos de anexo adicionais foram adicionados à UIAttachmentBehavior classe.

Consulte a Referência UIAttachment da Apple para obter mais detalhes.

Alterações UIPickerView e UIDatePicker

Antes do iOS 9, os controles UIPickerView e UIDatePicker não eram redimensionáveis e eram redimensionados automaticamente para preencher a largura de seu contêiner (geralmente a largura do dispositivo iOS em que o aplicativo estava sendo executado).

No iOS 9, esse redimensionamento automático não ocorre mais e os controles serão renderizados em uma largura de 320 pontos em todos os dispositivos iOS, independentemente do tamanho e da orientação da tela.

Para corrigir essa situação, use Auto Layout e classes de tamanho para fixar a largura do controle para as bordas do contêiner pai (exibição) e especificar a altura necessária. Consulte nossa documentação de Introdução aos Storyboards Unificados para obter mais informações sobre como trabalhar com Layout Automático e Classes de Tamanho em um aplicativo Xamarin.iOS.

Nova classe UITextInputAssistantItem

Use a nova UITextInputAssistantItem classe para criar o layout de Grupos de Botões da Barra em uma Barra de Atalhos. A barra de atalhos é uma nova área que está disponível no teclado virtual para fornecer atalhos de digitação.