Apple iOS wytyczne dla programistów stan:Aplikacje AppStore/iOS i kod interpretowany - gdzie narysują linię?
3.3.2 - aplikacja sama w sobie nie może zainstalować lub uruchomić inny kod wykonywalny wszelkimi środkami, w tym między innymi poprzez zastosowanie plug-in architektury, wywoływanie innych ram, inne interfejsy API lub w inny sposób. Zinterpretowany kod nie może zostać pobrany lub użyty w Aplikacji z wyjątkiem kodu, który jest interpretowany i uruchamiany przez API Dokumentowane przez Apple i wbudowany interpreter (-y).
Zakładając, że pobieranie dane - jak XML i obrazy, lub opis poziom gry, na przykład - (? Jak to jest moje wrażenie) w czasie wykonywania jest dozwolone, zastanawiam się, gdzie przebiega granica między "dane" i "kod". Wyobraź sobie scenariusz aplikacji, która dostarcza użytkownikom interaktywne "prezentacje" (na przykład ankieta). Prezentacje są dodawane do serwera w sposób ciągły, a różne prezentacje są udostępniane różnym użytkownikom, więc nie mogą być częścią początkowego pobierania aplikacji (co byłoby tym punktem). Są one opisane w formacie XML, ale jest interaktywny, mogą zawierać warunkowego rozgałęzienia tego rodzaju (pokazane w formie pseudo egzemplifikować):
<options id="Gender">
<option value="1">Male</option>
<option value="2">Female</option>
</options>
<branches id="Gender">
<branch value="1">
<image src="Man" />
</branch>
<branch value="2">
<image src="Woman" />
</branch>
</branches>
Kiedy ten XML jest interpretowany i „gra” w aplikacji, powyższe zostałby przedstawiony w dwóch etapach. Najpierw wyświetlany jest ekran wyboru, w którym użytkownik może kliknąć jedną z dwóch opcji ("Mężczyzna" lub "Kobieta"). Następnie obraz zostanie [pobrane dynamicznie] i wyświetlony w oparciu o wybór dokonany w poprzednim kroku.
Teraz łatwo wyobrazić sobie dodatkowe tagi, opisujące dalszą logikę. Na przykład, zawierające znacznik może być dodawany:
<loop count="3">
<options... />
<branches... />
</loop>
wynik tu jest, że na ekranie obrazu/ekranu pary wybór będzie przedstawione kolejno trzy razy na oczywiście.
Albo wyobraź sobie jakiś format opisujący poziom w grze. Być może jest to naturalne, że jako pasywne "dane", ale jeśli obejmuje ono, powiedzmy, kilka bram, przez które użytkownik może przejść i różne wyzwalacze, pułapki i punkty do nich dołączone itd. - nie jest tym samym, co używanie skrypt (lub, w istocie, zinterpretowany kod) - aby opisać sekwencje wykonawcze, opcje i ich odpowiedzi warunkowe?
Zakładając, że mechanizm interpretacji danych jest już obecny w aplikacji i że takie "prezentacje" mogą być konsumowane (nie tworzone lub edytowane) w aplikacji, w jaki sposób byłoby to zgodne z wytycznymi Apple dotyczącymi iOS? Czy XML w zasadzie nie jest językiem skryptowym w tym sensie (czy w języku XML nie można opisać żadnego programu w języku interpretowanym)?
Czy byłoby dobrze, gdyby zastrzeżony język skryptowy (patrz powyższy kod XML) był ściśle piaskowany (w jaki sposób mogą to zrobić?) I nie miał dostępu do systemu operacyjnego w żaden sposób (ale mógł pobierać treść - jak ankieta lub poziom gry - dynamicznie, a także wyniki wysyłania - odpowiedzi lub wyniki - na serwer tworzenia treści)?
Gdzie idzie linia?
Nie możesz dokładnie tego poznać. Tylko Apple to wie. Zobacz, Codea, która korzysta z wbudowanego interpretera Lua i pozwala użytkownikowi napisać kod pomyślnie przejdzie przez filtr. –
Interesujące. Chociaż bardziej interesuje mnie możliwość pobierania nowych "prezentacji" ("skryptów", jeśli wolisz), niż użytkownik może pisać/edytować kod * lokalnie *. – d7samurai
Uważam, że użytkownik, który ma swobodę wykonywania dowolnego kodu, wykracza daleko poza to, co chcesz. Tak więc akceptuję, że Twoja aplikacja jest akceptowana ma większe szanse niż nie jest akceptowana, ale znowu, kto wie. –