Spieszysz się? Policz bajty słów kluczowych od razu w przeglądarce: za darmo, bez rejestracji, nic nie jest wysyłane.
Co mówi Apple (i co obserwują deweloperzy)
Pytanie wydaje się proste, ale same strony Apple podają różne wartości:
- Dokumentacja App Store Connect opisuje pole Keywords tak: „You can provide up to 100 bytes of content.” Bajty.
- Strona Creating Your Product Page mówi o 100 znakach.
- Na forum deweloperów w 2022 roku pracownik Apple przetestował tajskie słowa kluczowe przez API: 100 znaków przeszło, 106 zostało odrzuconych. A 100 tajskich znaków zajmuje dużo więcej niż 100 bajtów.
Dokumentacja referencyjna mówi więc o bajtach, a co najmniej jedna obserwacja pokazuje liczenie znaków. Dopóki Apple tego nie rozstrzygnie, trzeba wybrać regułę.
Dlaczego ta różnica ma znaczenie
W UTF-8 litery łacińskie bez znaków diakrytycznych zajmują jeden bajt, litera z akcentem lub polskim znakiem dwa, a znak japoński czy tajski trzy.
| Słowo kluczowe | Znaki | Bajty |
|---|---|---|
| shopping | 8 | 8 |
| épicerie | 8 | 9 |
| supermarché | 11 | 12 |
| Einkaufsliste | 13 | 13 |
| 買い物リスト | 6 | 18 |
| รายการ | 6 | 18 |
Dla angielskiego problem w ogóle nie występuje. Dla polskiego, francuskiego czy hiszpańskiego różnica to kilka bajtów na całą listę (każde ą, ć, ł czy ż to bajt więcej). Dla japońskiego lub tajskiego to samo pole mieści trzy razy mniej tekstu, jeśli liczyć bajty, i tu wybór reguły naprawdę ma znaczenie.
Policz to sam
W terminalu, na pliku fastlane ($(cat …) usuwa końcowy znak nowej linii):
printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -c # bytes
printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -m # characters
wc -m liczy znaki zgodnie z ustawieniami regionalnymi terminala; przy locale innym niż UTF-8 zwraca tę samą liczbę co wc -c. W Dart:
import 'dart:convert';
final keywords = 'courses,épicerie,liste,famille,partagée';
print(utf8.encode(keywords).length); // 41 bytes
print(keywords.runes.length); // 39 characters
Reguła, którą stosujemy
Licz bajty. Tak mówi dokumentacja referencyjna i to najostrzejsza opcja: pole, które mieści się w 100 bajtach, na pewno mieści się w 100 znakach, więc nigdy nie zostanie odrzucone. LocalePilot stosuje ją na ekranie opisu App Store, który podczas pisania pokazuje na przykład „94 / 100 bajtów”.
W japońskim, chińskim, koreańskim czy tajskim ta ostrożność kosztuje: część miejsca może zostać niewykorzystana. Jeśli te rynki są dla Ciebie ważne, wypróbuj dłuższą listę w App Store Connect: od razu odrzuca za długie pole, więc dowiesz się, co dziś przechodzi.
Co nie zależy od jednostki
- Przecinki, bez spacji wokół nich. Każda spacja po przecinku niepotrzebnie zajmuje bajt.
- Bez powtarzania nazwy i podtytułu. Większość poradników ASO odradza powtarzanie w słowach kluczowych tego, co mówią już te dwa pola.
- Jeden plik na język. W fastlane każda lokalizacja ma własny
fastlane/metadata/<locale>/keywords.txt. Tłumaczenie angielskiej listy słowo w słowo rzadko daje frazy, które ludzie faktycznie wpisują: zacznij od wyszukiwań w języku docelowym.