Skip to content

Commit

Permalink
Fixed broken links
Browse files Browse the repository at this point in the history
  • Loading branch information
Isuru-Nanayakkara committed Oct 22, 2022
1 parent 2e07cb0 commit d7efa4e
Show file tree
Hide file tree
Showing 11 changed files with 18 additions and 17 deletions.
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

0 comments on commit d7efa4e

Please sign in to comment.