2012-10-19 4 views
17

AppleのiOSデベロッパガイドライン状態:AppStore/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> 

結果ここで選択画面/映像画面のペアを順次もちろん、三回にわたって提示されることです。

ゲームでのレベルがと記載されていることを想像してください。パッシブな「データ」と見なすのは自然かもしれませんが、たとえば、ユーザーが通過できるさまざまなトリガー、トラップ、ポイントなどを含む複数の出入口を含む場合は、スクリプト(または実際には、解釈されたコード) - 実行順序、オプション、およびその条件付き応答を記述する

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

プロプライエタリスクリプト言語(上記のXMLを参照)は厳密にサンドボックス化されています(どのように伝えることができますか)。また、オペレーティングシステムへのアクセス権も与えられていません。アンケートやゲームレベル - 動的にアップロードするだけでなく、回答やスコアをオーサリングサーバーにアップロードする)

行はどこに行きますか?

+0

あなたはそれを正確に知ることはできません。 Appleだけがそれを知っています。 See、Codeaは、埋め込まれたLuaインタプリタを使用し、ユーザがコードを書き込むことができます。 –

+0

興味深い。私は、ユーザーがコード*をローカルで書く/編集できるよりも新しい "プレゼンテーション"( "スクリプト"、もしあれば)をダウンロードする能力にもっと関心があります。 – d7samurai

+0

私は自由に任意のコードを実行することができるユーザーは、あなたが望むものをはるかに超えていると信じています:)したがって、私はあなたのアプリが受け入れられているより大きなチャンスが受け入れられていると言うだろうが、再び、誰が知っている。 –

答えて

0

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

基本的に似たような質問をすると、「あなたのアプリケーションは、アップルが承認していないこのようなFTPダウンローダ、キー解読ツールなどの別の実行可能コンパイルコードをダウンロードします。

+0

はい、問題は "パッシブデータ"と "アクティブデータ"の間の行、つまり実行可能なロジックを表すデータです。ソースコードもデータです。プログラムをダウンロードしてコンパイルしたり、それを解釈して実行したりすることができれば、それがここの問題です。 – d7samurai

0

「コード」と「データ」の違いの概念については、以前に議論されています してくださいこの回答を参照してください:https://stackoverflow.com/a/642476/200696

アップルの観点からは、この禁止はアプリストアからのレビューされていない実行可能なコンテンツを防ぎます。 Appleによって承認されたプログラムを作成し、事前に承認された動作を変更する実行可能なコンテンツをダウンロードすることは自明です。

+0

ここでの問題は、一般に「コード」と「データ」の違いではなく、具体的にはAppleがAppStoreのコンテキストでその線を描く場所です。さらに、これは、アプリが、アプリ自体が「実行可能」(つまり、ネイティブまたは独立して実行可能なコンテンツではない)というデータをダウンロードする状況に関するものです。オンデマンドでパワーポイントのようなプレゼンテーションをダウンロードして(例えば、内蔵の分岐ロジックの機能を追加した)、プレゼンテーションごとに新しい「ユーザーエクスペリエンス」を作成するPowerPointのようなアプリケーションを想像してみてください。 – d7samurai

1

App Reviewチームによるガイドラインと実際の実践には大きな違いがあります。

現在のガイドライン状態

:どのような方法でコードをダウンロードしたり、フォームを他の実行可能コードをインストールまたは起動

2.8アプリを拒否されます

2.7アプリは拒否されます

だから、解釈されたコードの古い禁止はなくなり、IDEや自己修正と見なすことができるアプリの禁止に置き換えられる。

しかし、実際には、これを行うアプリが数多くあるため、theoriaとpraxisの違いがあります。

0

私は、XMLを使ってアプリケーション内の動作をスクリプト化する製品をリリースしたと言えます.Appleは常にそれらを承認しています。

1

あなたはAppleが何を持っているかを見てくださいenabled in iOS7。これで、アプリ内でJavaScriptをダウンロードして実行できるようになりました。 CODEAなどは下記のツールをプログラミング

2

アップデートWWDC 2017

のようになりまし明示的にコードをダウンロードすることが許可されています。 App Store Guidelinesは現在、(強調鉱山を)言う:

2.5.2アプリは、自己完結型自分の束であるべきであり、読み取りまたは書き込みデータを指定されたコンテナの領域の外側に、また彼らがダウンロードすることができ、インストール、または実行しない場合がありますコード、他のアプリを含む。 実行可能コードを教えたり、開発したり、テストしたりするために設計されたアプリケーションは、限られた状況下で、そのようなコードが他の目的に使用されないという条件で、コードをダウンロードすることができます。そのようなアプリは、アプリケーションが提供するソースコードを、ユーザが完全に閲覧可能かつ編集可能にする必要があります。

緩和句の詳細については、this tweetもあります。

オリジナル

あなたの解釈のダウンロードは、ユーザーが無限ループや再帰を書くことができますか?

Appleはインタープリタを提供し、コードを強制終了する可能性があるため、Javascriptを許可しています。私はそれが10秒の限界だと読んだ気がしますが、私は数分の検索でサイト上でそれを見つけることができませんでした。 (はい、答えを書くための私の自制タイムアウト)

あなたがしていることが宣言的で、インタプリタで明確なループを許さないなら、あなたはかなり安全だと思います。

アップルが公開しているディスカッションを含むすべての説明に「インタープリタ」という言葉を使用することも避けたいと思います。 「パーサ」がより安全になるかもしれない。

Codeaはこれらの定義のエッジに沿ってLua環境でスケートしており、コードをダウンロードできません。新しいパッケージを ".codea"ファイルとしてダウンロードする場合はhad to remove a featureです。

2

3.3.2に基づいて、アプリはこれを拒否する可能性があります。しかし、より怖いのは、あなたがアプリケーションを作成し、承認を得て、それを多くのユーザーがダウンロードして使用できるようにしてから、Appleが店からアプリを引き出すことができるということです。

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

関連する問題