2013年 1月 の投稿一覧

iOS5.x系と6.x系を両方対応させるコツ

iOS5.x系でデバッグできない、起動しない、表示が崩れる・・・など

最新のXcodeを利用して組むと、いつのまにか5.x系では動かない狭いアプリになってしまいます。5.x系に調整する方法を以下に記します。

・iOS5.x系のシミュレータをインストールする

Xcode->Preferences ->Downloadsタブを開くと、過去のバージョンのSDK等の一覧が表示されますので、必要なものをダウンロードする。

・storyboardのuse auto layoutを使うとiOS5.xでは動作しない

storyboardをクリックし、File Inspectorから use auto layoutのチェックボックスを外す。

・auto layoutで一度組んだUIは、auto layoutを外すと崩れる場合がある

崩れてStoryboard上の配置を直せば問題無い場合もありますが、

Storyboard上の座標と表示座標がずれていることがあります。

その場合には、File Inspectorを開いて、右から2番目のView->auto sizingを調整することで修正できます。

・UITableView系で新しく追加されたメソッドはresponseToSelectorで確認する

・特に、setRefreshControl:と、Xcodeが自動生成するUITableViewのtableView dequeueReusableCellWithIdentifier: forIndexPath:に注意。

iOSのPush通知がきかなくなったとき

開発中のアプリのPush通知が突如効かなくなった。どう対処すればいいのか?

僕が行ったのは、iTunesで以前iPadで同期していたPCからiPhoneを設定したときに起こりました。

もし、思い当たる節があれば、以下の対処法で解決しましたのでご覧頂ければと。

すべてをリセットすれば問題無い

僕が行った手順は以下です。

  • iTunesからアプリを全て削除する
  • iTunesとiPhoneを切り離す(これ、絶対!)
  • iPhoneを出荷状態に戻す
  • iPhoneをiTunesに接続
  • 新しいiPhoneとして設定(これ、絶対!)
  • 同期するものを聞かれるので、全て同期しない(これ、絶対!)
  • Xcode経由で起動
  • サーバからPush通知
  • Notificationが届くか確認する
ちなみに、上記の手順はどこか無駄が多いのですが、一つでも変えたらできなくなってしまったので、全て必要だったのではないかと思います。

なんでこんな苦労をしたのか?

実機でリリースビルドする際には、TestFlightよりもiTunes経由が早いので、iTunes経由でアプリを落とそうと思い、iTunes経由でインストールしたのがハマった原因でした。

iOSの証明書が切れたときの注意点

実機確認で証明書問題が起こったときの対処法

ちょうど1年間のライセンスが切れ、証明書の更新を行ったときにエラーが出力されて実機で確認できなくなってしまいました。購入しただけでは問題が解決しなかったため、ios dev centerとXcode 4.5で証明書をいろいろいじることで解決できました。

以下、僕が行った手順を記します。

・iOS devのチケットを購入
購入時点では有効期限切れが解消されないので、24時間以内に来るというメールを待つ。
・window -> organizer で証明書一覧を更新する
右下のRefreshボタンにて更新可能
・古い証明書を削除し、新しい証明書を指定
エラー:The executable was signed with invalid entitlementsが出たので、以下の手順にて対処。

・実機から古い証明書を削除
・window->organizer->Device->provisioning profileのところに古い証明書があるので削除
・window -> organizer で古い証明書を削除する
※利用する証明書は削除しないこと
・左側のプロジェクトナビゲータから、ターゲットを選択
・ターゲット選択後、build settingタブを開き、code signingの箇所に新しい証明書に変更
・クリーンする
・実機で起動する