Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixed broken links #53

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion _i18n/en/factors/prefer-local-over-remote.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Most iOS apps require some kind of backend for certain tasks, like authenticatio

All parts of the app that don't necessarily **need** an internet connection (e.g. login) should work without any internet connection at all:

- Your app's startup screen ([that shouldn't exist in the first place](https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/)) should never wait for the first successful web response, as this causes bad UX for users with a spotty internet connection.
- Your app's startup screen ([that shouldn't exist in the first place](https://developer.apple.com/design/human-interface-guidelines/patterns/launching/)) should never wait for the first successful web response, as this causes bad UX for users with a spotty internet connection.
- If your app requires an internet connection for everything (e.g. social networking app or ride sharing app), your app should still work (in read-only mode) without an internet connection to access historic data (e.g. recent rides, recent direct messages).
- Any feature of your app that needs a working internet connection should show a clear error message that the server couldn't be reached.
- As WiFi hotspots might require a login or confirmation of some sorts (e.g. hotel or airport), HTTPS requests will often get stuck and time-out after about a minute. Until Apple resolves this issue on a system level, we as developers have to make sure to properly handle those situations.
Expand Down
2 changes: 1 addition & 1 deletion _i18n/es/factors/persistence-of-data.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Almacenar información y configuración de acuerdo a los lineamientos de Apple es crucial para el ciclo de vida de la aplicación, en particular cuando se refiere a la sincronización con iCloud, renovación del dispositivo telefónico y restauración de una copia de seguridad en el teléfono.

Asegurarse de seguir los lineamientos oficiales de Apple para [almacenamiento de información en iOS](https://developer.apple.com/icloud/documentation/data-storage/index.html):
Asegurarse de seguir los lineamientos oficiales de Apple para [almacenamiento de información en iOS](https://developer.apple.com/documentation/foundation/optimizing_your_app_s_data_for_icloud_backup):

- `Documents`: Usar este directorio para contenido generado por el usuario, se genera una copia de respaldo del mismo.
- `Caches`: Usar este directorio para información que puede ser regenerada.
Expand Down
2 changes: 1 addition & 1 deletion _i18n/es/factors/prefer-local-over-remote.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ La mayoría de aplicaciones iOS requieren algún tipo de back-end para ciertas t

Todos los componentes de una aplicación que no necesariamente **necesitan** una conexión a internet (ej. login) deberían funcionar por completo aún sin estar conectados a la red:

- La pantalla de inicio de la aplicación ([que no debería existir en primer lugar](https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/)) jamás debe esperar por una primera respuesta exitosa del servidor web, ya que esto causa una mala experiencia de usuario cuando la conexión a internet es mala.
- La pantalla de inicio de la aplicación ([que no debería existir en primer lugar](https://developer.apple.com/design/human-interface-guidelines/patterns/launching/)) jamás debe esperar por una primera respuesta exitosa del servidor web, ya que esto causa una mala experiencia de usuario cuando la conexión a internet es mala.
- Si la aplicación requiere una conexión a internet para todo (ej. red social o aplicación de navegación), debería funcionar de todas maneras (en modo de solo lectura) sin una conexión a internet para acceder a información histórica (ej. viajes recientes, mensajería privada).
- Toda característica de la aplicación que requiera una conexión a internet debería mostrar un mensaje de error claro sobre la incapacidad de conectarse al servidor.
- Ya que los puntos de acceso WiFi podrían solicitar inicio de sesión o confirmación de algún tipo (ej. hotel o aeropuerto), las solicitudes HTTPS se atascarán con frecuencia y se invalidarán por time-out después de un minuto aproximadamente. Hasta que Apple resuelva este inconveniente a nivel del sistema, nosotros como desarrolladores tenemos que asegurar un manejo adecuado de estas situaciones.
Expand Down
4 changes: 2 additions & 2 deletions _i18n/ja/factors/prefer-local-over-remote.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@

インターネット接続を**必ずしも必要としない**部分(ログインなど)はインターネット接続なしでも動作すべきです。

- アプリの起動画面([そもそも存在するべきではありません](https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/))は Web のレスポンスを待つべきではありません。これは不安定なインターネット接続が悪い UX を引き起こすためです。
- アプリの起動画面([そもそも存在するべきではありません](https://developer.apple.com/design/human-interface-guidelines/patterns/launching/))は Web のレスポンスを待つべきではありません。これは不安定なインターネット接続が悪い UX を引き起こすためです。
- もしアプリのすべての機能(ソーシャルネットワーキングアプリやライドシェアアプリ)でインターネット接続が必要であっても、履歴データ(乗車履歴、ダイレクトメッセージなど)へのアクセスはインターネット接続なしで(読み取り専用モードで)動作すべきです。
- インターネット接続が必要なアプリではサーバーに接続できないという明確なエラーメッセージを表示すべきです。
- Wi-Fi ホットスポットはログインや何らかの確認が必要な場合があり(ホテルや空港など)、HTTPS リクエストは停止して1分後にタイムアウトになることがよくあります。Apple がこの問題をシステムレベルで解決するまでは、開発者がこれらの状況を適切に対処する必要があります。
- Wi-Fi ホットスポットはログインや何らかの確認が必要な場合があり(ホテルや空港など)、HTTPS リクエストは停止して 1 分後にタイムアウトになることがよくあります。Apple がこの問題をシステムレベルで解決するまでは、開発者がこれらの状況を適切に対処する必要があります。
- アプリの初回起動時にユーザーがネットワークに接続していることを前提にしないでください。ユーザーはアプリをインストールしてからインターネット接続なしで出かけるまでアプリを開かないかもしれません。デプロイ時に最新のデータを使ってすぐ使える状態でアプリを出荷する責任があります。これは [Deployment](/deployment) ファクターで説明している毎週のリリーストレインとともに行います。
2 changes: 1 addition & 1 deletion _i18n/ko/factors/persistence-of-data.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Apple의 가이드라인에 따라 데이터와 설정을 저장하는 것은 앱의 라이프 사이클에 치명적입니다. 특히 iCloud 동기화, 새로운 폰으로 업그레이드 그리고 백업에서 폰을 복원하는 경우에서 그렇습니다.

Apple의 공식 [iOS 데이터 저장 가이드라인](https://developer.apple.com/icloud/documentation/data-storage/index.html)을 따르고 있는지 확인하세요.
Apple의 공식 [iOS 데이터 저장 가이드라인](https://developer.apple.com/documentation/foundation/optimizing_your_app_s_data_for_icloud_backup)을 따르고 있는지 확인하세요.

- `Documents`: 이 폴더는 유저가 생성한 컨텐츠를 위해 사용하세요. 이 폴더는 백업이 될 것입니다.
- `Caches`: 이 폴더는 다시 생성할 수 있는 데이터를 위해 사용하세요.
Expand Down
2 changes: 1 addition & 1 deletion _i18n/ko/factors/prefer-local-over-remote.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

인터넷 연결이 반드시 필요하지 않은 앱의 모든 부분은 인터넷 연결 없이 작동해야 합니다.

- 여러분의 앱 시작 화면([처음부터 존재하지 말았어야 하는 화면](https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/))은 처음 웹 리스폰스를 기다리지 맗아야 합니다. 이는 왔다갔다 하는 와이파이 환경에선 사용자에게 나쁜 UX를 선사합니다.
- 여러분의 앱 시작 화면([처음부터 존재하지 말았어야 하는 화면](https://developer.apple.com/design/human-interface-guidelines/patterns/launching/))은 처음 웹 리스폰스를 기다리지 맗아야 합니다. 이는 왔다갔다 하는 와이파이 환경에선 사용자에게 나쁜 UX를 선사합니다.
- 만약 앱이 모든 것에 인터넷 연결(예. 소셜 네트워킹 혹은 라이드 쉐어링 앱)이 필요하더라도, 인터넷 연결 없이 역사적인 데이터(예. 최근 운전, 최근 다이렉트 메세지 목록)라도 읽기 전용으로 볼 수 있게 해야합니다.
- 인터넷 연결이 필요한 어떤 기능이 있다면 서버에 접근할 수 없을 때 확실한 에러 메세지를 띄워줘야 합니다.
- 와이파이 핫스팟이 호텔이나 공항처럼 로그인이나 확인이 필요하다면, HTTPs 리퀘스트는 1분 넘게 타임아웃이 걸릴 것입니다. Apple이 이 이슈를 시스템 단계에서 해결할 때까지, 우리가 개발자로서 이러한 상황을 적절하게 다뤄줘야 할 것입니다.
Expand Down
4 changes: 2 additions & 2 deletions _i18n/pt_BR/factors/persistence-of-data.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
De acordo com os guias da Apple, armazenar dados e configurações é fundamental para o ciclo de vida de seu aplicativo, especialmente quando se trata de sincronização com o iCloud, troca de telefone ou restauração de um telefone a partir de um backup.

Certifique-se de seguir o [Guia de armazenamento de dados](https://developer.apple.com/icloud/documentation/data-storage/index.html) oficial da Apple:
Certifique-se de seguir o [Guia de armazenamento de dados](https://developer.apple.com/documentation/foundation/optimizing_your_app_s_data_for_icloud_backup) oficial da Apple:

- `Documents`: Use esse diretório para conteúdos gerados pelo usuário. Ele será incluído em backups
- `Caches`: Use esse diretório para dados que possam ser regerados
Expand All @@ -13,4 +13,4 @@ A API do Keychain lhe dá o controle de como o dado está sendo armazenado no ap

Um questionamento muitas vezes ignorado que você deve se fazer é: quando o usuário fizer um upgrade para um novo aparelho, o dado (ex: sessão de login) deve ser migrado também?

Se você usa [`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`](https://developer.apple.com/documentation/security/ksecattraccessiblewhenunlockedthisdeviceonly), o dado não será incluído no backup do iCloud ou do iTunes, o que significa que o usuário irá perder o dado quando fizer o upgrade do aparelho.
Se você usa [`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`](https://developer.apple.com/documentation/security/ksecattraccessiblewhenunlockedthisdeviceonly), o dado não será incluído no backup do iCloud ou do iTunes, o que significa que o usuário irá perder o dado quando fizer o upgrade do aparelho.
2 changes: 1 addition & 1 deletion _i18n/pt_BR/factors/prefer-local-over-remote.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ A maioria dos aplicativos iOS requer algum tipo de backend para determinadas tar

Todas as partes do aplicativo que não necessariamente **precisam** de uma conexão com a internet (o que não é o caso do login, por exemplo) devem ser capazes de funcionar sem conexão com a internet:

- A tela inical do aplicativo, ou _launch screen_, ([que a propósito nem deveria existir](https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/)), nunca deve esperar pela primeira resposta de sucesso do servidor, pois isso gera uma experiência ruim para o usuário com uma conexão inconsistente
- A tela inical do aplicativo, ou _launch screen_, ([que a propósito nem deveria existir](https://developer.apple.com/design/human-interface-guidelines/patterns/launching/)), nunca deve esperar pela primeira resposta de sucesso do servidor, pois isso gera uma experiência ruim para o usuário com uma conexão inconsistente
- Se seu aplicativo requer conexão de internet para tudo (ex: aplicativo de rede social ou de carona compartilhada), ele deve ainda assim funcionar (de modo passivo) sem uma conexão com a internet para acessar dados históricos (ex: caronas recentes, mensagens recentes).
- Toda funcionalidade do aplicativo que precise de uma conexão funcional com a internet deve mostrar uma mensagem de erro clara de que não foi possível se conectar ao servidor.
- Dado que hotspots WiFi podem requerer um login ou uma confirmação de algum tipo (ex: hotel ou aeroporto), requisições HTTPS irão ficar travadas com frequência e darão time-out após cerca de 1 minuto. Até que a Apple resolva esse problema a nível de sistema, nós como desenvolvedores temos que garantir que estamos tratando essas situações da forma correta.
Expand Down
4 changes: 2 additions & 2 deletions _i18n/ru/factors/prefer-local-over-remote.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
В последние годы некоторые группы разработчиков начали использовать подходы, которые требуют меньше усилий по разработке, за счет снижение качества *user experience*, перенеся больше логики на бэкэнд и сделав приложение iOS тонким клиентом, показывающим результаты сервера. Такой подход приводит к разочарованию пользователя, когда приложение используется в ситуации с неидеальным подключением к Интернету (например, в метро, ​​лифте или неровном WiFi).
В последние годы некоторые группы разработчиков начали использовать подходы, которые требуют меньше усилий по разработке, за счет снижение качества _user experience_, перенеся больше логики на бэкэнд и сделав приложение iOS тонким клиентом, показывающим результаты сервера. Такой подход приводит к разочарованию пользователя, когда приложение используется в ситуации с неидеальным подключением к Интернету (например, в метро, ​​лифте или неровном WiFi).

**Приложение должно выполнять как можно больше бизнес-логики и вычислений на устройстве** по целому ряду причин:

Expand All @@ -15,7 +15,7 @@

Все части приложения, которым не обязательно **требуют** подключение к Интернету (например, логин), должны работать вообще без подключения к Интернету:

- Экрану запуска вашего приложения([которого не должно существовать](https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/launch-screen/)) никогда не следует ждать первого успешного ответа от бека, так как это вызывает плохой UX для пользователей с нестабильным подключением к Интернету.
- Экрану запуска вашего приложения([которого не должно существовать](https://developer.apple.com/design/human-interface-guidelines/patterns/launching/)) никогда не следует ждать первого успешного ответа от бека, так как это вызывает плохой UX для пользователей с нестабильным подключением к Интернету.
- Если вашему приложению требуется подключение к Интернету для всего функционала (например, приложение для социальных сетей или приложение для обмена поездками), оно должно по-прежнему работать (в режиме только для чтения) без подключения к Интернету для доступа к историческим данным (например, недавние поездки, недавние прямые сообщения).
- Любая функция вашего приложения, для которой требуется работающее подключение к Интернету, должна отображать четкое сообщение об ошибке, что сервер не может быть достигнут.
- Поскольку для точек доступа WiFi может потребоваться вход в систему или подтверждение каких-либо действий (например, в отеле или в аэропорту), запросы HTTPS часто зависают и время ожидания истекает примерно через минуту. Пока Apple не решит эту проблему на системном уровне, мы, как разработчики, должны быть в состоянии должным образом справиться с этими ситуациями.
Expand Down
7 changes: 4 additions & 3 deletions _i18n/zh_cn/factors/persistence-of-data.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
根据苹果官方指南,数据和配置的存储对应用的生命周期至关重要,尤其是在 iCloud 同步、更新数据至一个新手机以及恢复手机备份时。

请参考苹果官方的 [iOS 数据存储指南](https://developer.apple.com/icloud/documentation/data-storage/index.html):
请参考苹果官方的 [iOS 数据存储指南](https://developer.apple.com/documentation/foundation/optimizing_your_app_s_data_for_icloud_backup):

- `Documents`:该目录用于存储用户生成的内容,且会备份
- `Caches`:该目录用于存储可以被重新生成的数据
- `tmp`:该目录用于存储临时文件
- 使用文件的 `do not back up` 属性

绝不应该在这些目录中存储用户敏感信息(如:密码或会话),而应该使用钥匙串(Keychain)的API
绝不应该在这些目录中存储用户敏感信息(如:密码或会话),而应该使用钥匙串(Keychain)的 API

钥匙串 API 可以让你控制数据的存储方式。请确保你对[这些属性](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values)是如何影响应用的生命周期有着足够的理解。

你应该问自己一个问题——这个问题经常被人忽视——当用户升级到了一个新的 iOS 设备,数据(如:登录会话)是否也应该迁移过去?

如果你使用 [`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`](https://developer.apple.com/documentation/security/ksecattraccessiblewhenunlockedthisdeviceonly) 属性,则数据不会被 iCloud 或 iTunes 的备份,这意味着用户如果更新他们的设备,则会丢失这些数据。
如果你使用 [`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`](https://developer.apple.com/documentation/security/ksecattraccessiblewhenunlockedthisdeviceonly) 属性,则数据不会被 iCloud 或 iTunes 的备份,这意味着用户如果更新他们的设备,则会丢失这些数据。
Loading