新しいiOS 5ファイルポリシーと編集長の歴史





こんにちは、habrasociety!



この記事を2つの部分に分けることにしました-最初の部分は、 NEPの新しいファイルポリシーと、お気に入りのドキュメントフォルダー、つまり iOS開発者に役立つ情報(まだHabréに書いていないようです)。 この情報は、更新/新しいアプリケーションをAppStoreにアップロードする際に、あなたの神経、時間、およびお金を節約したい場合に非常に役立ちます。



第二に、私はAppleの最初のテクニカルサポートラインとウォッチマン症候群との戦争について話しますが、それは物語のようなものであり、あなたはそれを読む必要はありません。



今どこにファイルを書きますか?



iOS 3.x-4.xのチュートリアル/マニュアルでは、英語で白で書かれています-次のようなメソッドを作成します



+ (NSString *) pathForDocuments { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); return [paths objectAtIndex:0]; }
      
      





そして、そこにすべて-基本、キャッシュ、インターネットからダウンロードされた写真-一般的に、あなたが好きなものを書きます。 iOS 5.0でのiCloudサービスの導入により、Appleは、iTunesとiCloudの両方がDocumentsフォルダの完全バックアップを作成するという事実により、ポリシーを変更しました。



例で説明しましょう-たとえば、あなたは愛する子供のためにiPhoneを購入し、長い涙、脅威、説得の後、iPadを購入しました。 幸せな子供はすぐにAngry Birdsをインストールしましたが、それは不運です-彼は2レベルものパックで学校の机の下で、そして家のiPadで学校に行きました。



しかし、恐れるな、ベイビー! 奇跡のiCloudがDocumentsフォルダーを同期し、新しく開いたGolden Eggsがカバーの下で利用可能になりました! HDになりました。



アプリケーションがこの原則に従って機能する場合、何も変更する必要はありません。 Appleの規則で述べられているように、ユーザーが作成したコンテンツ(ユーザー生成コンテンツ)は最も神聖で正統なデータタイプであり、同期する必要があります。 しかし、別の例を考えてみましょう。



この現象は、特に、Lingvo辞書で見られます。 Appleの命令により、プログラムで再作成またはインターネットから再ダウンロードできるコンテンツは、ドキュメントに配置することを固く禁じられています(拒否はこれに依存します)。 代わりに、それらはライブラリ/キャッシュに配置する必要があります。十分なディスク容量がない場合、システムはすぐにそれらを破棄します。 シナリオは想像以上に一般的です-最愛の人と夕方の視聴のためにiPadにドイツ語のHD映画をいくつかダウンロードする価値があり、ドイツ語-フランス語辞書はなくなっています-作業中に3Gでダウンロードする必要があります。 地下鉄で。



当然、開発者は腹を立て始めました-ユーザーは、高価なメガバイトの携帯電話料金によって押し上げられたコンテンツが消えるプログラムを使用したくないでしょう。 このため、すでに5.0.1で、Appleは「バックアップしない」属性を追加しました-Documentsの任意のファイルまたはフォルダーに配置する価値があり、iCloudとiTunesはそれらを無視します。 同時に、十分な空き容量がない場合、システムにはそれらを削除する権利がありません。 すべてが通常どおり残ります。 コードでは、次のようになります( 公式ソースから取得)。



 #include <sys/xattr.h> - (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL { const char* filePath = [[URL path] fileSystemRepresentation]; const char* attrName = "com.apple.MobileBackup"; u_int8_t attrValue = 1; int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); return result == 0; }
      
      







しかし、 重要ですが、ドキュメント内でのストレージの必要性は、レビュー中にまだ証明する必要があります(これらのファイルがなければ、アプリケーションのユーザーエクスペリエンスが崩壊するという事実に関するポイントを実証する必要があります)。 もちろん、レビュアーは全員を把握していません。2週間前に、ルールに違反するアプリケーションを見逃したのを目撃しましたが、ファイルサイズはわずか10キロバイト以下でした。 アプリケーションに数十、または数百メガバイトが必要な場合、更新しても、一からアプリケーションをいっぱいにせずに、ピッキングと攻撃を待ちます。 5日以上待っても、Appleはアップグレード前にアプリケーションをまったく起動しませんが、Appleに感謝します。



これはすべて有用な情報です。 公式ルールを必ず読んでください-手紙はほとんどありませんが、多くの神経を節約できます。



方法



しかし、古いフォルダに影響を与えずにファイルシステムに新しいフォルダを追加するだけで、すべての問題を回避できます。 たとえば、同期されたフォルダを作成し、保存されたゲーム、読者のお気に入りのページ、クレジットカードをメールに投稿するように注文します。必要なすべてのメソッドは、必要なメソッドのペアを追加します。 スティーブの下で...



拒否に対処する方法



これは、すでにこの問題に遭遇した人だけに役立ちます。 それで、早朝に仕事に来て、見に行きます-アプリケーションはリダイレクトされました。 私はレビュアーが言及した聖なるタブレットを読みました-そして実際、彼らは戒律第1号と第2号に違反しました。 しかし、4番を読んだ後、私はまだ抜け穴があることを理解しています。 コードを完了するのに数分、QAをテストするのに2時間、アプリケーションを破棄し、「アプリの適切な機能のために、またはオフライン使用中に顧客が利用できることを期待するために」ファイルが必要であるというコメントを添付しました。 ところで、これは純粋な真実でした。



2日後の2番目のドラフトであるAppleの対応は次のようなスタイルになっています。

お返事ありがとうございます。

// 2番目の段落から、ユーザーが生成しないコンテンツの許容されないことについて引用します


顧客は心配していましたが、私は彼らを驚かせることに決めました-各ファイルの目的、各小さなパパは、2ページ目ではなく4点目を参照するように求めました。 :

お返事ありがとうございます。

// 2番目の段落から、ユーザーが生成しないコンテンツの許容されないことについて引用します


顧客はパニックに陥り、毎日3回コンテンツレターを受け取り始めました。



私はあなたがそれを軽視しないことを私の心で信じています。

しかし、あなたが他の行動をとることを拒否することは、不可解で、失望し、イライラさせられます。


またはそれ以上

失われた時間にお金を払うつもりはありません。 そして、すべてのクライアントはそのような請求書から差し引かれます。 私に選択の余地はありません。


一般に、数千人ですが、それはポイントではありません。



Appleからの応答速度(2〜3〜4日ごと)を考えると、状況は激化していました。 校閲者はタブレットの4番目のポイントを強制せず、最初の3つのコピーと貼り付けで停止したという印象を受けました。



解決センターに書いて、状況をさまざまな言葉で説明しましたが、毎回同じ無視の答えを受け取ったことに加えてください。 誰がこのアイデアを思いついたのか正確には覚えていませんが、同じことを書いて、 テクニカルサポートに通信を添付して、3日後に予期せずに動揺しました。



読んだ後
イェーイ! 私たちはとても幸せで興奮しています。 大変お世話になりました! (レビュープロセスでのこれらのイディオも
私は安心してバレリアンとビールを飲みに行きました。



まとめ

あなたとあなたのアプリケーションに幸運を。そして、評価があなたと共に来るかもしれません!



All Articles