追記(2013.3.21):
無事審査通って公開されましたー!
紹介ページそのうち新しくしますw
以下、当時の記事。
結果から言うとダメでした。^^;
iTunes Connect>Manage Your Pplications>Review Status>Resolution Centerで詳細を確認すると下記のような文章が。
We found that your app initiates the In App Purchase process in a non-standard manner.
Tapping buy button prompts the user to log in using Apple ID and password prior to displaying the In App Purchase confirmation window.
To restore previously purchased In App Purchase products, it would be appropriate to provide a "Restore" button as a separate process from the In App Purchase and initiate the restore process when the "Restore" button is tapped by the user.
Other/Information Needed
Additionally, we began the review of your app but are not able to continue because we need sample data that can be imported to the app so that we'd be able to access all the feature of your app.
Alternatively, you may provide a demo video that demonstrates your app in use.
You can provide a link to a demo video of your app in iTunes Connect. Go to "Manage Your Applications," select your app, click "Edit Information," then scroll to the "Review Notes" section and add the demonstration video access details.
For discrete code-level questions, you may wish to consult with Apple Developer Technical Support.
えーと、アプリ内課金で購入済みのユーザーに対するリストア(復元)処理を含めろということなのかな?
このへんを参考にしてみたいと思います。
≫アプリ内課金のリストア(購入済み)処理が原因でリジェクトされた場合の対処法
≫失敗しない iOS In-App Purchase プログラミング
≫iOS: In App Purchase、Restore処理のハマりポイント
あとはデモデータがないから検証が継続できないよと。動作しているデモムービーを用意してくれてもいいよ、ということですかね。
仕事が今詰っているのでまだまだ時間かかりそうです。
最近スマホ用サイトにも手を出し始めました(今更か)。
コーディング自体はナウでヤングな若者の間で流行のjQueryMobileを使えば比較的低コストでできちゃうのですが、問題になるのがPCとスマホの表示切り替え。
一番ラクチンなのはそれぞれのページからリンク貼って終わらせる方法ですが、たぶんそういうのは気付かれにくい。やはり自動的にスマホ用ページへ飛ばしたいですよね。
自分の要件はこんな感じです。
そんなわけで色々調べて、自分にあった方法をまとめてみました。
もっとスマートな方法はあると思いますが。
iPhone/iPadで日記を更新する際に面倒なのがリンクタグの作成です(断定)。
検索すると便利なブックマークレットがたくさん公開されているのですが、いまいち自分の好みに合うものがなかったので自分で作ってしまいました。
このソースをコピーしてブックマーク登録してください。
やりかたが分からない人は次の「使い方」へ。
まず現在表示しているこのページをブックマークします。
名前は「リンク作成」とかにしておくといいかもしれません。
URLは後で編集します。
上記のjavascriptソースを全て選択してコピーします
登録したブックマークを編集し、コピーしたjavascriptをURLの部分にペーストします。
これで準備完了!
あとはリンクを作成したいページで、このブックマークレットを呼ぶだけです。
TitaniumでのiOSアプリ作成にチャレンジしてます。
gihyo.jpの連載「Titanium Mobileで作る! iPhone/Androidアプリ」を参考に
進めていたらわりと基本的なところでつまづいてしまったのでメモしておきます。
[ERROR] error loading path: /Users/dada/Library/Application Support/iPhone Simulator/5.0/Applications/B790C5A7-CFA7-4B14-A281-A944BF9420C9/testApp.app/table_view.js, Error Domain=NSCocoaErrorDomain Code=260 "The operation couldn’t be completed. (Cocoa error 260.)" UserInfo=0x8c97840 {NSFilePath=/Users/dada/Library/Application Support/iPhone Simulator/5.0/Applications/B790C5A7-CFA7-4B14-A281-A944BF9420C9/testApp.app/table_view.js, NSUnderlyingError=0x8c94390 "The operation couldn’t be completed. No such file or directory"}
app.jsの内容を分割してみたら、そんなファイルはないというエラーが。
解決方法は簡単で、メニューの[Project>Clean]を実行するだけでした。
プロジェクトクリーン後、実行し直すと分割したファイルも読み込むようになります。
iPhoneプログラミングメモ。
動的に作成したUILabelの文字サイズを自動的にリサイズする方法です。
文字が表示枠からはみ出す時などに適用されます。
InterfaceBuilderでは簡単に設定できますよね。
label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 25); label.font = [UIFont systemFontOfSize:20]; label.adjustsFontSizeToFitWidth = YES; label.minimumFontSize = 14; [self addSubview:label]; [label release];
fontプロパティで通常時の文字サイズを指定し、
adjustsFontSizeToFitWidthプロパティで自動リサイズを設定。
minimumFontSizeプロパティで最小フォントサイズを指定します。
iPhoneプログラミングメモ。
UIScrollViewで任意の位置にスクロールする方法。
zoomToRectメソッドで表示する範囲を指定するだけという簡単さ。
CGRect rect = CGRectMake( 100,200, 400, 400 ); [scrollView zoomToRect:rect animated:YES];
しかし現在表示している範囲と上記で指定したサイズが違う場合
スケールが変わってしまいます。
出来る事ならスケールは変えたくないという場合がありますよね。
そんな時は現在のスケールを再指定してあげます。
// 現在のスケール float scale = scrollView.zoomScale; // ズームスクロール CGRect rect = CGRectMake( 100,200, 400, 400 ); [scrollView zoomToRect:rect animated:YES]; // スケールを再指定 [scrollView setZoomScale:scale];
もっと面倒かと思ったらえらい簡単でびっくりしましたw
iPhone/iPadプログラミングメモ。
縦横どちらの画面でも中心に表示される UIViewを作っていたのですが、
[[UIDevice currentDevice] orientation]
を使っていたら実機で上手くいかなかったのでメモしておきます。
まず、上手くいかなかった理由としては UIDeviceの orientationプロパティには
回転方向だけでなく、画面が上向きか下向きかも存在していたからです。
それぞれ UIDeviceOrientationFaceUp、UIDeviceOrientationFaceDownです。
orientationプロパティでは「縦画面か横画面か」ではなく、本体の向き
であることを覚えておく必要があります。
対応策として、orientationプロパティを保存しておくことにしました。
UIViewでアニメーションを行った後に実行するメソッドを
外部から指定することって出来ないかなーと思ってこんなふうに書いてみました。
結果としてエラーになったんですが、メソッドを渡すことって出来ないのかなぁ。
できました! 単なるタイプミスだったようです。^^;
-(void)startDialogAnimation:(id)delegateTarget action:(SEL)action{ // アニメーション前準備 // 画面の外にいったん出す CGRect frame = hogeView.frame; frame.origin.y = -100; [hogeView setFrame:frame]; // アニメーション設定 // 受け取ったオブジェクトとセレクターを設定してみた CGContextRef context = UIGraphicsGetCurrentContext(); [UIView beginAnimations:nil context:context]; [UIView setAnimationDelegate:delegateTarget]; [UIView setAnimationDidStopSelector:action]; [UIView setAnimationDuration:0.5]; // アニメーションの完了値 CGRect lastFrame =hogeView.frame; lastFrame.origin.y =300; [hogeView setFrame:lastFrame]; [UIView commitAnimations] }
呼び出すときはこんな感じ。
[dialogView startDialogAnimation:self action:@selector(hogeMethod)];
iPhone/iPadプログラミングメモ。
iPhoneアプリを作るとき icon.png という名前で 57x57(iPadは72x72)ピクセルの
画像をXcodeに読み込ませれば自動的にアプリケーションのアイコンに
設定されてくれます。
ご丁寧なことに光沢エフェクト(グラデーションエフェクト)までついてくれる
のですが、それを消す方法。
info.plist に「UIPrerenderedIcon」という項目を作り、True(チェックを入れる)に
設定すればいいそうな。
ちなみに Xcode 3.2.3でやったら
Icon already includes gloss effects
という名前に自動変換されました。
ちなみにアイコンについては「ヒューマン インターフェイス ガイドライン」に
掲載されているのですが、ファイル名については書かれてませんでした。
iPhone4になって解像度があがり、必然的にアイコンの画素数も変わりました。
NAGAOKA STATIONさんのまとめによると
下記のような感じらしいです。多っ!!
Icon.png : 57 x 57
[email protected] : 114 x 114
Icon-72.png : 72 x 72
Icon-Small.png : 29 x 29
[email protected] : 58 x 58
Icon-Small-50.png : 50 x 50
Default.png : 320×480
[email protected] : 640 x 960
Default-Landscape.png : 768 x 1024
Default-Portrait.png : 768 x 1024
Default-LandscapeRight.png : 768 x 1024
Default-LandscapeLeft.png : 768 x 1024
Default-LandscapeDown.png : 768 x 1024
アイコン関係はこのへんも参考になりそう。
iPhoneプログラミングメモ。
シミュレータだと問題ないのに実機で動作させると画像が表示されない。
調べてみるとファイル名の大文字小文字問題があるとか。
シミュレータ…大文字小文字区別ナシ
実機…区別アリ
でも今回ワタクシが遭遇したのはファイル名の間違いは一切なく、
仕様なのかバグなのかよくわからないものでした。
Xcode>キャッシュを空にする
ビルド>すべてのターゲットをクリーニング
もやってみたのですが治りませんでした。
で、自分の場合は下記の方法で治りました。
単純に画像を再登録するだけなのですが、リンク切れを意図的に発生させています。
なんなんでしょうねえ。