タイトルによると、アプリでカスタム URL スキームを使用する場合、URL の最大長はどれくらいですか?
たとえば、URL を介して別のアプリを起動し、次のようなものを使用してデータの塊を渡すとします。
myappscheme://some/path?data=0123456789ABCDEF
URL が途切れる (またはシステムが他のアプリの起動をまったく拒否する) 前に、その文字列はどのくらいの時間取得できますか?
タイトルによると、アプリでカスタム URL スキームを使用する場合、URL の最大長はどれくらいですか?
たとえば、URL を介して別のアプリを起動し、次のようなものを使用してデータの塊を渡すとします。
myappscheme://some/path?data=0123456789ABCDEF
URL が途切れる (またはシステムが他のアプリの起動をまったく拒否する) 前に、その文字列はどのくらいの時間取得できますか?
残念ながら、答えは得られないようです。max len は、私が見つけたどの iOS ドキュメントでも明確に定義されていません。
上記の MSK のリンクで説明されているように、URL の絶対的な文字列の長さではなく、URL ベースの URL の長さに制限があります。したがって、これはおそらく最大で約 2000 文字の安全な賭けです。
ただし、テストでは上限はないようでした。iOS で 365,535 文字の URL を問題なく使用できました。ただし、アップルがサポートを継続する必要はないため、「自己責任で使用してください」. ただし、非常に多くのアプリがこれを使用して、アプリ間の大量のデータを含む情報を転送しているという事実に基づいて、長さを減らす理由がないように思われるため、Apple はおそらくそれをサポートし続けると思います。 .
上記の答えは誤解を招くものです。ドキュメントでは実際には言及されていませんが、パスとファイル名には長さの制限があります。
ここで、ファイル パスまたは名前に使用できる長さに制限があることがわかります。これらは で確認できますsyslimits.h
。
#define NAME_MAX 255 /* max bytes in a file name */
#define PATH_MAX 1024 /* max bytes in pathname */
それらをログに記録して、次のように自分で確認できます。
NSLog(@"PATH MAX VALUE: %i", PATH_MAX)
パスは、UTF-8 で 1024 バイトまたは 1024 文字に制限されています。パス内のファイル名は、UTF-8 で 255 バイトまたは 255 文字に制限されています。
日本語の文字をエンコードしたファイル (URL/名前が大幅に長くなる) を処理しようとして、この問題に遭遇しました。私の唯一の解決策は、現時点で名前を切り取ることです。
こちらの Apple サポート ページで、一部の言語 (韓国語や日本語など) には、より多くのバイトを消費し、問題を引き起こす文字がどのように使用されているかについて説明されていることがわかります (ただし、問題に対処するための適切な方法は実際には提供されません)。
参照http://en.wikipedia.org/wiki/URI_scheme :
スキーム名は、文字で始まり、その後に文字、数字、プラス ("+")、ピリオド (".")、またはハイフン ("-") の任意の組み合わせが続く一連の文字で構成されます。スキームでは大文字と小文字が区別されませんが、標準形式は小文字であり、スキームを指定するドキュメントでは小文字を使用する必要があります。その後にコロン (":") が続きます。
長さについては何もありません。