カテゴリー: iPhone関連のプログラムなど

iPhone4などのRetinaディスプレイでsetNeedDisplayを使うと重くなる場合の対処

お絵描きアプリで線などを描画するとき、通常setNeedDisplayを使うと思います。

iPhone3GやiPhone3GSなどではスラスラ描画できるのですが、Retinaディスプレイのデバイスで試すと、やたら描画が遅れて線がカクカクしてしまうことがあります。

これはsetNeedDisplayで画面全体を再読み込みしていることが原因です。つまり、touchesMovedで呼び出している場合、指で画面をドラッグするたびに画面全体が何度も何度も読み込まれるので、処理が追いつかなくなりわけです。

こういう場合はsetNeedsDisplayInRectを使います。これは画面のうち必要な部分だけを再読み込みするもので、読み込まれる部分が少ないのでその分処理が早くなります。

使い方はこんな感じ。

[self setNeedsDisplayInRect:CGRectMake(読み込む部分の開始位置x軸, 読み込む部分の開始位置y軸, 読み込むサイズx軸, 読み込むサイズy軸)];

最初の2つで読み込みの開始位置を指定し、後の2つで読みこむサイズを指定します。

1点だけ注意が必要なのが、読み込みの開始位置は線の半径分をマイナスしなくてはいけません。
つまり、線は指でさわった点を中心点としてそこから半径のサイズに描画するため、読み込みの開始位置も半径分マイナスするわけです。

たとえば、CGContextSetLineWidthで線の太さを200にした場合、開始位置は半径の分の100を引いた数値を指定します。

[self setNeedsDisplayInRect:CGRectMake(currentPoint.x - 100, currentPoint.y - 100, 200, 200)];

これで処理が少し早くなります。ただ、あまりにも読み込むサイズが小さいと素早くかつ広い範囲で線を描画したときに線が読み込む範囲を超えてしまい、うまく描画できなくなるのでそこは数値を変えてチェックを繰り返して試してみてください。

iPhoneに入れる広告の種類について

先週末から、iPhoneアプリに入れていたAdmobの広告収入が激減しました。
調べてみると、私だけでなく他の開発者様も軒並み広告収入が減っているようで、これを機に他の広告会社へ乗り換えようとしている人も多いようです。

日本ではAdmobとAdmakerが有名ですが、広告会社はそれぞれ一長一短あるので、どこの広告を入れたらよいのか分からないことも多いと思うので、私が分かる範囲で各社の違いを紹介します。

日本の開発者がよく入れている広告

iAd

Appleが提供している広告。クリック単価が高いのが魅力だが、残念ながら日本の広告はまだ未対応。
しかし、海外ではちゃんと表示されるので、海外のユーザーがターゲットのアプリは入れてみるとよい。
ちなみに、日本では未対応だが今年中に電通と組んでリリースされるらしい。

Admob

グーグルの子会社でモバイル広告最大手。以前はドキュメント(説明書)に間違いが多く導入に手間がかかったが、2011年3月のバージョンで導入はカンタンになった。
広告表示率がとても低いのが最大の弱点。

Admaker

日本の企業が提供する広告。日本の広告は多く広告表示率が高い。
以前は管理画面がなかったり広告の内容が悪かったらしいが、今は管理画面もあり広告の内容も改善されているらしい。

どの広告を入れるべきか

海外のユーザーをターゲットにしている人は、iAdかAdmobを入れればよいと思います。初めてでよく分からない人はAdmobがオススメです。
国内のユーザーをターゲットにしている人は、Admakerを入れれば広告表示率もほぼ100%ですし安心かと思います。

すべての広告を入れ、表示する広告をWeb上で切り替える方法

上記3つから1つの広告サービスを選ぶのではなく、全ての広告を表示させることもできます。
つまり、iAdが表示されなかったらAdmobを表示し、Admobも表示されない場合はAdmakerを表示する・・・という流れです。

この機能を自分で実装することもできますが、そういった複数広告切り替えサービスを提供している企業がありますので、そちらを利用した方が早いと思います。

広告切り替えサービスを提供しているのは、現在私が知っている範囲では3つです。
Adwhirl
Admaker(2011年3月広告切り替えサービス停止)
Smadd

前述のとおり、私は今までAdmob一本で広告展開をしたせいで今回収入が激減したので、上記の切り替えサービスをアプリに組み込んでみようと思います。
私が導入するのはAdmobの子会社が提供しているAdwhirlです。
「導入がけっこう大変」とAdmakerの方はおっしゃっていたので、いろいろ手間取るかもしれませんが、その軌跡をブログで公開してこれから導入を検討している方のお役に立てれば幸いです。

というわけで、私はiAD→Admaker or Admob を実現しようと思います。
次回からはAdwhirlの導入方法についてご紹介します。

次の記事、iPhoneアプリにAdwhirlを設置してiAdとAdmobを切り替える方法はこちら

プログラムはシグナルを受信しました、と表示される。

最近、特になにもプログラム自体に大きな変化を加えていないのに、急に「プログラムはシグナルを受信しました」と
コンパイル時にエラーが出るようになった。

この現象の特徴として、

1、一度出ると何をしてもだめ。iPhoneを再起動してもクリーニングしてもPCを再起動してもだめ。
2、いきなり出る。特にプログラムに大きな修正を加えてなくてもあるときポッと出る

が挙げられる。

この現象の理由は様々あるみたいだけれど、そのうちの一つにiOS4.2.1独自のバグみたいのがある、かも、ということらしい。
http://iphone-app-developer.seesaa.net/article/171206882.html

とりあえずこの現象があると全く開発が進まなくなるため、ただいまiOS4.3にアップデート中。

なおったらまたこちらで報告します。

iphoneデスクトップへブックマーク用アイコンを表示させる方法

iphoneでは、ウェブサイトを「ブックマークに登録する」以外に、ホーム画面にアイコンとしてブックマークを設置することができます。

今回は、そのブックマークアイコンをお好きなデザインに変更する方法を紹介します。

まず、114px × 114px のアイコンを用意します。

次に、あなたのサイトのルートディレクトリ(一番上の階層ってことね)に「apple-touch-icon.png」という名前で保存します。

これだけでOK。iphoneのホームにあなたのウェブサイトを追加すると、さきほど作ったアイコンが表示されます。

itunes connectでiphoneアプリのアイコン画像を登録した時に、自動で光沢がかかる場合の対処

あけましておめでとうございます。今年も何卒よろしくお願いします。

2011年もすでに8日が経過しましたが、みなさまいかがお過ごしでしょうか?

私は昨年末のよくわからない忙しさからも開放され、これからたくさんiphoneアプリを作っていこうと思います。
というわけで、2011年1発目の記事はアプリのアイコンについてです。

アイコンから光沢を消す設定

iphoneアプリやipadアプリのアイコンは、自動で光沢がかかるようになっています。

しかし、光沢がない方が良いという場合もあるので、そのときはちょっとだけ設定をいじってあげる必要があります。

○○○(あなたのアプリのプロジェクト名)-info.plistを開き、Keyの列に新しく「Icon already includes gloss effects」を追加し、右の「value」列にチェックボックスが表示されるのでチェックを入れます。

これでアイコンに光沢がかからなくなるはずです。

上記の設定をしたのに、itunes connectにアプリを申請したときに登録したアイコン画像に光沢がかかってる!という場合の対処

対処は、特にありません。

というより、上記の設定をしていればちゃんと光沢がない状態のアイコンが最終的には表示されます。

しかし、アプリを申請した直後は光沢がついた状態で表示されることがあるようです。
私の場合は「waiting for review」に変わったと同時に光沢がなくなりました。たぶんそういうシステムなんでしょうね。

では。

プロフィール

PICxPIC
1983年生まれ。2010年からiOSアプリを開発し、2012年に法人化。メディア掲載やランキング、ダウンロード数などの詳しい実績などはこちら

PICxPICのアプリ

赤ちゃんの大冒険

おさるランド

動物オーケストラ2

子どもゲームランド

おしゃべりボタン

天空までのぼれ!

ジャンプで川下り

ひよこランド

動物オーケストラ

ポコポコアニマル

キラキラお絵かき

音が出るお絵かき

あいづちん