お?いけるくさい?

iPhoneアプリエンジニアのたまごです。いっちょまえエンジニア目指してちいさな発見や学んだことを覚え書きしていきます!Objective-C/iOS/開発

iOSbeta版からのアクティベーション(復活)

iPhoneアプリを開発していると、Appleから「最新OSのbeta版が出たよ!」

ってお知らせが来て、Apple DevelopperからiOSのbeta版をインストールして

開発することがあるかと思います。

 

beta版のインストールについては各所でやり方がのっていると思うのですが、

Appleが正式にOSを公開したときに、

このbeta版端末が死亡することがあります。アーメン。

 

画面には「アクティベーションが必要です」の文字。。

この状態になると、にっちもさっちもいかなくなります。

(キャリアすらつながらなくなったような。)

再起動してもこの文字が出るだけ...

さて困った。

 

調べたところ、beta版には期限があるということでした。

つまり、beta版で開発していた端末をしばらく放置していて、

電池とか切れちゃって、久々に立ち上げたら

Oh NO...What's activate..?(;゚Д゚)みたいな感じですね。

 

色々ネット上での情報を調べていると、

緊急電話を押して、番号を早押しすると入れます!

とか裏ワザチックなことも書いてあって、

もちろん全力で試したけど、10回目くらいで

これ無理だわ..絶対冷静なやり方あるわ..と悟った。

 

解決法

こうなったらストアにももちろん接続ができなくなってしまうので、

beta版をインストールしたやり方と同じように

端末に正式版をインストールしてあげます。

 

つまり、

==== ====================================================

Apple Developperにいき、正式版(Restore版)のOSをダウンロードしてくる。

 ※なんかファイルのアイコンが実体がないみたいなもやっとした感じになってますが

 無事ダウンロード内に保存されるかと思います。

iTunesを開いて端末画面へ行き、Optionキーを押しながら[アップデート]を選択し、

 先ほどDLしたRestore版を端末へ入れる。

========================================================

 

これで復活すると思います。

ハマったのでメモ!

 

iPhone5/iOS6になってのTips

viewDidunLoadは呼ばれない

これけっこう気をつけること。

NotificationとかObserverとか、

removeしてあげないといつまでも通知してくれる健気な彼ら。

プログラムに旋風を巻き起こすことになります。

結果、

「なんでこのメソッド2回も呼ばれるんだ..!」とか、

「呼ばれる回数がどんどん増えている..!怪現象か..!」とか、

そんなことになるので、

viewWillDisappearでremoveしてあげること。

ということはセットするのはviewWillAppearとかが良いですね。

 

iPhone5でのimageNamedでの画像指定

用意する画像は3つ

・abc.png

・abc@2x.png

・abc-568h@2x.png

iPhone4SのRetina Displayでは

UIImage* image = [UIImage imageNamed:@"abc.png"];

と書けば呼び出してくれる。

でiPhone5ではっていうと、

UIImage* image = [UIImage imageNamed:@"abc-568h.png"];

とすれば良いです。

この場合に、abc-568h.pngとかっていう画像は不要です。

3種類あればok。

(ただし568-h@2xサイズを用意してね)

それはなぜかっていうと、画像ファイルのほうに@2xとついていると、

自動的に「Retinaサイズだ!」と認識してくれるから。

かつ、568hの画像(=iPhone5)は必ずRetina Displayなので、

1/2サイズは用意しなくていい。

 

if (IPHONE5) {

  image = [UIImage imageNamed:@"abc-568h.png"];

} else {

  image = [UIImage imageNamed:@"abc.png"];

}

 

みたいな感じ!

ちなみにIPHONE5てのはマクロ定義してます。こんな感じ。

#define IPHONE5 ([UIScreen mainScreen].bounds.size.height == 568)

むしろもう3Gとか対応するのいいんでは..orz って思ってしまうけど

まだ若干ユーザーいるみたいね。