2011年8月29日月曜日

カレンダーを生成するUIコンポーネントライブラリ for iOS

カレンダーViewを作るのに参考になりそうなものを探している。

devinross/tapkulibrary - GitHub

標準カレンダーライクなUI
カバービューなどいろんなViewを提供してくれるライブラリの一部にカレンダーがある。

Screenshot 8

klazuka/Kal - GitHub

こっちも標準カレンダーライク

Screenshot 9

muhku/calendar-ui - GitHub

DayとWeeklyのViewがあるカレンダー

Screenshot 10Screenshot 11

 

damiandawber/DDCalendarView - GitHub

シンプルな感じのカレンダー実装

Screenshot 12

 

shaokun/SimpleCalendarView - GitHub

結構綺麗な感じのカレンダー
コードも整理されてる。

Screenshot 13

voidparadox/Si-Calendar - GitHub

標準カレンダー風
ちょっとタップのアニメーションとか増えてる気がする

Screenshot 14

iphonecal - iPhone calendar control/iPhone日历控件 - Google Project Hosting

中国語だけど、ちょっと書き換えれば他の言語でも同じ。
drawを多用してる感じのコード

NewImage

 

標準でカレンダーViewを提供されてそうな気がしそうなんだけど、EventKitみたいなAPIぐらいしかないのかな。
他にもカレンダーViewを作るライブラリなどがあったらよろしくお願いします。

 

2011年8月23日火曜日

Appleのアプリ審査ガイドライン、UIWebViewに関係するリジェクト事例

大部分がUIWebViewだけを使うようなアプリに対してどういう審査があるのかを少し調べた。

Appleによる審査ガイドライン

日本語

英文と並んでいて見やすい

via アップル社のアプリ審査基準ガイドライン最新版の和訳を公開しました « ジェネシックスブログ

他の人の訳

審査基準ガイドラインについての私見が書かれていてわかりやすい。

リジェクト理由をいろいろ書いた記事の訳

ガイドラインでUIWebViewに直接関係ありそうな所

  • 2.17
    Apps that browse the web must use the iOS WebKit framework and WebKit Javascript
    ウェブをブラウズするアプリはiOS webkit framework と webkit Javascript を使わなければなりません。
  • 11.2
    Apps utilizing a system other than the In App Purchase API (IAP) to purchase content, functionality, or services in an app will be rejected
    In App Purchase以外のシステムでコンテンツや機能、サービスにアプリ内で課金を行うアプリはリジェクトされます。
  • 12. Scraping and aggregation

    12.1
    Applications that scrape any information from Apple sites (for example from apple.com, iTunes Store, App Store, iTunes Connect, Apple Developer Programs, etc) or create rankings using content from Apple sites and services will be rejected
    アップル関連のサイトの情報をスクレイピングしたり、その情報を使ってランキングを作ったりしたアプリはリジェクトされます

    12.2
    Applications may use approved Apple RSS feeds such as the iTunes Store RSS feed
    iTunes Store RSS feedのような承認を受けたApple RSS feedsは使っても良い

    12.3
    Apps that are simply web clippings, content aggregators, or a collection of links, may be rejected
    ただウェブを切り抜いたり、コンテンツを集計したもの、リンク集のようなアプリはリジェクトされます

リジェクト事例から

通信失敗、エラー時のフィードバックは必須

1.Webサービスと連携しているアプリで、審査時にWebサービスとの間でエラーが起きてしまい処理が完結できなかったのでrejectされました。

通信エラー時に簡単にデータが失われないようにしてリトライできるようにしておくこと。特にWebViewをembedしてるアプリだと気を遣う必要はありそうです。

2.同様にWebアプリと連携する場合は、ネットワークが繋がらない際のエラー処理に注意を払う必要があり、エラー時の動作が適切ではないという指摘を受けたこともあります。

アプリ起動後に通信エラーになった場合の動作確認は、地下鉄や半地下の事務所などでテストするとやりやすいかも。

最低予算1万ポイントで。iPhoneアプリの審査でリジェクトを食ら.. - 人力検索はてな

 

・リモート画像を表示する画面で、ネットワークに接続されない状態で画面を開いてもなにもおきません。

これがヒューマンインターフェースガイドライン違反なので、ネットワーク接続が必要な旨=エラーである旨を表示する必要があるとのことです。

僕の場合はUIAlertを使ってアラートを出しまして通過しましたが、特にアラートじゃなくても通知できれば問題なさそうです。

最低予算1万ポイントで。iPhoneアプリの審査でリジェクトを食ら.. - 人力検索はてな

 

WebViewを組み込みのアプリで、ページの読み込み中に「Now Loading..」などのメッセージを表示するようにしないと、rejectされます。

ネットワークに接続されていない環境だと、永遠にWebページが表示されず、フリーズしたように見えるためです。

テストするときは「機内モード」をオンにすれば簡単だよ、とアドバイスを受けました。

ちなみに、以下がrejectされたアプリです。

http://jp.youtube.com/watch?v=K5ZoBXDLi1M

最低予算1万ポイントで。iPhoneアプリの審査でリジェクトを食ら.. - 人力検索はてな

 

2. AirPlane モードで、期待されているように動かない

ちゃんと AirPlane モードでも動作することを確認しているのだなーと。
3. ネットにつながってないときに同期ボタンを押してもなんの反応もないので、なんらかのフィードバックをユーザに返すようにしなさいね、とのこと (Alert とか)

Alert だされるとうっとうしいので、何も表示しないようにしていたんですけど、何らかのメッセージを bottomBar に表示する、とかでも良さそうです。

最低予算1万ポイントで。iPhoneアプリの審査でリジェクトを食ら.. - 人力検索はてな

機械的な判定により弾かれる事例

結局リジェクトされてた理由がよくわからない例

Webサイトを表示するだけのアプリの事例

このへんの境界線があやふや

12.3 Apps that are simply web clippings, content aggregators, or a collection of links, may be rejected
ただウェブを切り抜いたり、コンテンツを集計したもの、リンク集のようなアプリはリジェクトされます

アップル社のアプリ審査基準ガイドライン和訳 - Google ドキュメント

アドレスバーから任意のURLを入力できるようなものは基本的に17+のレーティングにする必要がある。
Google検索ができるようなアプリも多分同じような扱いになりそう。
(似たようなアプリのレーティングをチェックするのがよさそう)

UIWebViews

アプリの持つWebViewが制限なくインターネット(何があるか分からない闇の世界だ)へアクセス可能な場合、自動的に17+のレーティングを義務づけられる。最初からあるSafariになぜ未成年者がアクセスできるのかは謎だ。どうやらそういうものらしい。

[訳] App Store Rejection Reasons | iPhone Development Blog - iOS 開発ブログ Natsu's note

その他

他の場合にも関係するが、プロモートだけを目的としてアプリはリジェクトされる。

他にもUIWebViewに関する事例や経験やリジェクトについての文章などがあったらお知らせください。