21

Apple の iOS 開発者ガイドラインには次のように記載されています。

3.3.2 — アプリケーション自体は、プラグイン アーキテクチャの使用、他のフレームワーク、他の API の呼び出しなどを含むがこれらに限定されない方法で、他の実行可能コードをインストールまたは起動することはできません。Apple の文書化された API および組み込みのインタープリターによって解釈および実行されるコードを除き、解釈されたコードをダウンロードしたり、アプリケーションで使用したりすることはできません。

たとえば、XML や画像、ゲーム レベルの説明などのデータを実行時にダウンロードできると仮定すると(私の印象では?)、「データ」と「コード」の境界線はどこにあるのか疑問に思います。インタラクティブな「プレゼンテーション」をユーザーに配信するアプリのシナリオを想像してみてください (たとえば、アンケートなど)。プレゼンテーションはサーバーに継続的に追加され、さまざまなユーザーがさまざまなプレゼンテーションを利用できるようになるため、最初のアプリのダウンロードの一部にすることはできません (これが重要な点です)。これらは XML 形式で記述されていますが、対話型であるため、この種の条件付き分岐が含まれる場合があります (例として疑似形式で示されています)。

<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>

この XML が解釈され、アプリ内で「再生」されると、上記は 2 つのステップで表示されます。最初に選択画面が表示され、ユーザーは 2 つの選択肢 (「男性」または「女性」) のいずれかをクリックできます。次に、画像が [動的にダウンロード] され、前のステップでの選択に基づいて表示されます。

ここから、追加のタグを想像するのは簡単で、さらにロジックを記述します。たとえば、包含タグを追加できます。

<loop count="3">

    <options... />
    <branches... />

</loop>

ここでの結果は、もちろん、選択画面/画像画面のペアが 3 回連続して表示されることになります。

または、ゲームのレベルを記述する形式を想像してみてください。それを受動的な「データ」と見なすのは当然かもしれませんが、たとえば、ユーザーが通過できるいくつかの出入り口が含まれていて、さまざまなトリガー、トラップ、ポイントなどがそれらに接続されている場合は、スクリプト (または、実際には解釈されたコード) - 実行シーケンス、オプション、およびそれらの条件付き応答を記述するには?

データの解釈エンジンが既にアプリに存在し、そのような「プレゼンテーション」はアプリでのみ使用できる (作成または編集できない) と仮定すると、これは Apple の iOS ガイドラインにどのように違反しますか? この意味で、XML は基本的にスクリプト言語を構成するのではないでしょうか (インタープリター言語のプログラムは XML で記述できません)。

プロプライエタリなスクリプト言語 (上記で使用されている XML を参照) が厳密にサンドボックス化され (どのように判断できるのでしょうか?)、オペレーティング システムへのアクセスがまったく許可されていない (ただし、アンケートやゲームなどのコンテンツをダウンロードできる) 場合は問題ありません。レベル - 動的にアップロードするだけでなく、結果 - 回答またはスコア - をオーサリング サーバーにアップロードします)?

ラインはどこに行きますか?

4

7 に答える 7

5

WWDC 2017 の更新

以下で説明する Codea などのプログラミング ツールは、コードのダウンロードを明示的に許可されるようになりました。現在、App Store ガイドラインには次のように書かれています (強調は私のものです):

2.5.2アプリはバンドル内で自己完結型である必要があり、指定されたコンテナー領域外でデータを読み書きしたり、他のアプリを含むコードをダウンロード、インストール、または実行したりしてはなりません。実行可能コードの教育、開発、またはテストを目的として設計されたアプリは、限られた状況で、そのようなコードが他の目的で使用されない限り、コードをダウンロードできます。このようなアプリでは、アプリケーションによって提供されるソース コードを、ユーザーが完全に表示および編集できるようにする必要があります。

緩和された条項の詳細を引用するこのツイートもあります。

オリジナル

解釈されたダウンロードにより、ユーザーは無限ループまたは再帰を記述できますか?

Apple が Javascript を許可しているのは、Javascript がインタープリターを提供し、コードを強制終了できるためです。10秒の制限だと読んだような気がしますが、サイトで数分検索しても見つかりませんでした. (はい、答えを書くための私の自発的なタイムアウトが開始されました。)

あなたが行うことが宣言的であり、インタープリターで明らかなループを許可しない場合、あなたはかなり安全だと思います。

また、公開討論を含め、Apple が目にするあらゆる説明で「インタープリター」という言葉を使用することは避けたいと思います。「パーサー」の方が安全かもしれません。

Codea は、Lua 環境でこれらの定義の端に沿って滑走しており、コードをダウンロードできません。新しいパッケージを「 .codea 」ファイルとしてダウンロードする機能を削除する必要がありました。

于 2013-11-21T06:05:21.227 に答える
4

3.3.2 に基づいて、このためにアプリを拒否することができます。ただし、もっと恐ろしいのは、アプリを作成して承認を得て、多くのユーザーにダウンロードして使用してもらい、Apple がストアからアプリを削除できることです。

あなたが説明したアプリを公開したことがありますか?

于 2015-02-18T05:57:00.387 に答える
0

私が言えることは、XML を使用してアプリ内の動作をスクリプト化する製品をリリースしたことであり、Apple は常にそれらを承認しています。

于 2013-09-26T08:20:07.827 に答える
0

Apple が意味することは、Web サイト/サーバーからダウンロードされる別のモジュール、コンパイルされた製品、または実行可能ファイルにアプリケーションが依存してはならず、コンパイルされたアドオンが Apple によってレビューされていないということだと思います。

基本的に私が似たようなことを尋ねたとき、彼らは私に次のようなことを言いました:アプリケーションを表さないファイル (XML、HTML、PDF ファイル、画像など)。

于 2013-01-29T02:41:06.157 に答える