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.
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:
- Introdução ao CloudKit - Nossa introdução ao uso do CloudKit em um aplicativo Xamarin.iOS.
- CloudKit Quick Start - Introdução da Apple ao CloudKit.
- CloudKit JS Reference - Documentação do CloudKit JS da Apple.
- CloudKit Catalog: An Introduction to CloudKit (Cocoa and JavaScript) - Aplicativo de exemplo da Apple usando CloudKit e CloudKit JS.
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 intervalo0.0
para1.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 intervalo0.0
para1.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 (comoUVExposure
) e àHKCategoryTypeIdentifier
classe (comoOvulationTestResult
).
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 eEvaluatePolicy
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.