2012年11月13日火曜日

iOS6非互換:画面回転について

iOS6になって画面回転挙動の違いやコーディング方法等、結構違いがあるようでコード修正が必要になります。 いまさらコアな部分は変更して欲しくないってのが正直なところですがアップルは良いと思ったら「スパッ」と変更してきますので追従するのが結構大変です。

いろんな方々がブログ等で相違点・対応策を公開されており、それらを参考に調べておりましたが少しはまってしまった点がありましたので記載したいと思います。

<相違点>
・画面向きの変更通知用に下記メソッドですがiOS5まではビューコントローラ生成時向きの変更が無くても呼び出されていましたが、iOS6では呼び出されないようになったようです。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration


メソッドの意味合いからすると画面向きが変更になっていないので呼び出されないのが正解かも知れませんが以前まではビューコントローラ生成時に呼び出されていたのでこのメソッド内で画面の方向を取得していました。

iOS6では呼び出されないので別の方法で現在のデバイス向きを取得する必要がありますが、以下のメソッドでは上手く取得できないケースがあります。

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

で、代わりの方法として以下のメソッドで現在のデバイス向きを取得できるようですのでこのメソッドにてデバイス方向の初期値を設定するよう修正したところ正常な動作を実現できました。

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];


メソッドの呼び出しタイミングとか呼び出し条件の変更等の非互換はテストでも見つけにくいバグ発生の原因になりますから勘弁して欲しいってのが正直なところですね。

<追加したコード>
- (void)viewDidLoad {
// 親クラスメソッド呼び出し
    [super viewDidLoad];
    
    // 現在のデバイス方向の取得
    UIInterfaceOrientation orientation = 
            [[UIApplication sharedApplicationstatusBarOrientation];
    [self willRotateToInterfaceOrientation:orientation duration:0];
}

2012年11月12日月曜日

iOS6非互換:NSTimerの挙動!?(原因判明)

アップルの技術者の皆様、XcodeやiOS6を疑って申し訳ございませんでした。(^^ゞ

原因が分かりました。 私のコーディング上の問題でした。

iOS6から生成したビューに対して「removeFromSuperview」が何故か呼び出されるようになっているため、このメソッドをオーバーライドしてNSTimerの停止処理(停止後、開放される)を組み込んでいたのでビュー生成後の初期処理内でNSTimerを生成して起動した直ぐ後に「removeFromSuperview」が呼び出されたため、NSTimerを停止しておりました。

メンバー変数「mTimerTask」に代入した場合のみタイマー停止処理が行われますが、代入しない場合はタイマー処理の参照が無いので停止されないので代入の有無で挙動が変わっていたようです。

対応としては「removeFromSuperview」のオーバーライドを止めて別のメソッドでタイマー処理を停止するよう修正したところ正常に動作するようになりました。

うーん、結構ハマってしまいました。

iOS6非互換:NSTimerの挙動!?

うーん、納得出来ない事象に見舞われています。(-_-;)

iOS5までは問題無く動作していたソースをXcode4.5.2でiOS6SDKでビルドすると上手く動作してくれない。

いろいろ調べたところ、どうも「NSTimer」でスケジュールした定期タスク(無限実行)が起動しておらず、これが原因で不具合が起きておりました。

って事でNSTimer部分を見てもおかしいところがない(そもそもiOS5シミュレータでは正常に動作する)がタイマー処理が起動していない。

<タイマー処理が起動されないソース>
    mTimerTask = [NSTimer scheduledTimerWithTimeInterval:0.5f
                                                  target:self
                                                selector:@selector(_performTimer:)
                                                userInfo:nil
                                                 repeats:YES];


<タイマー処理が起動するソース>
    [NSTimer scheduledTimerWithTimeInterval:0.5f
                                     target:self
                                   selector:@selector(_performTimer:)
                                   userInfo:nil
                                    repeats:YES];

見ての通り、NSTimer部分は全く同じでメンバー変数に代入しているかしていないかの違いのみにも関わらず前者は起動せず、後者は正常にタイマー処理が起動します。

ちなみに代入先の「mTimerTask」変数はプロパティ定義ではなく単純なNSTimer*の変数定義です。
  (変数定義) NSTimer  *mTimerTask;

代入部分の違いだけでタイマー処理が起動しなくなるって「どういうこと?」って感じで納得出来ない状況なので、もしかしたらXcodeコンパイラかiOS6に問題があるんじゃないかと思いたくなるような状況ですね。

2012年11月10日土曜日

iOS6非互換:デバイスと画面回転の不一致

iOS6のiPad(実デバイス)での拙作アプリ動作確認では特に問題無く動作していたんですが、iOS6シミュレータで実行すると画面の回転制御がおかしいのか横画面の筈がデバイスは縦状態になり、画面だけが横表示されるのでデバイスの向きと画面表示がずれる現象が発生していました。

iOS4.3やiOS5.1のシミュレータでは問題無く表示されるのでiOS6からの非互換のようです。

<原因>
・UIWindowクラスのrootViewControllerプロパティにViewControllerインスタンスを設定する必要があるようです。

<対応>
・rootViewControllerプロパティにビューコントローラーを設定するコードを追加。


// View表示切替
[window addSubview:theViewController.view];
[self.viewController.view removeFromSuperview];
self.viewController = theViewController;
// 2012/11/10 ADD_START: iOS6非互換対応
 self.window.rootViewController = theViewController;  …追加コード
// 2012/11/10 ADD_END
[window makeKeyAndVisible];


上記のようにrootViewControllerプロパティに代入するとデバイスの向きと画面の向きが合いました。

ではまた~

半年ぶりの投稿。。。(^^ゞ

久しぶりの投稿です。 半年以上。。。(^^ゞ

やっと本業の案件が一段落しましたんでiOS開発に復帰です。

Macを起動することも時間が開いてたんでまずは「システムアップデート」を実施。
XcodeもiOS6対応版がリリースされてたんで「Xcodeアップデート」も実施しました。

久しぶりにXcodeを起動しましたが見た目は大きく変わってませんが操作方法(キーボードショートカット)とか思い出せない。。。(-_-;)

ソース自体もObjective-C独特の"["や"]"が連なるコードに違和感を感じますね〜。

と、感慨に耽っている時間もそこそこに手探りながらXcodeの開発に戻りたいと思います。

2012年4月27日金曜日

iOS開発から遠ざかっています(^^ゞ

毎年、年度末から年初はバタバタするんですが、今年も例にもれず忙しい。。。(-_-;)

ゲーム等のiOSアプリ開発もやっていますが、本業は業務システム開発(Windows,Linux系)ですので3月〜4月は本業が立て込んでいてiOSアプリ開発に時間が割けない状況が続いています。(^_^;)

Windows系のプログラミングをしていると早くiOSのXcode開発(Objective C言語)での開発に戻りたいって気持ちになりますね。
特にCocoaライブラリやUIKitライブラリに慣れちゃうと.NETライブラリが旧時代の遺物に触れているみたいでプログラミング自体が楽しくない…(^^ゞ

まぁ仕事なんで我慢ですけど、早くiOSアプリ開発に戻りたいものです。

2012年3月28日水曜日

新型iPad到着しました。

本日9:00、注文してた新型iPad(WiFi64GB)が到着しました。
商品出荷メールから約3日ですから思っていたより早めの到着で少し驚きです。

現在の初代iPadからデータ移行して新型iPadをメイン機にした後、初代は一世代古いiOSを載せて動作確認用iPadとして第2の人生を全うさせる予定です。

この新型iPadは既に300万台売れているようで、これから遅れて発売する国や追加注文分も販売されればどんどん出荷台数が増えそうですね。(*^_^*)

弊社リリースのiOSアプリでも3/16の発売日からアプリダウンロード数も「グンッ」と増えましたし、広告収入も5倍くらいに増えましたからiPad出荷台数が増えるのは喜ばしい事です。
(広告収入増は日本でもiAD広告配信が始まったのが増えた要因かも知れませんが)

2012年3月26日月曜日

Xcode 4.3.2アップデート

App Store にXcode 4.3.2アップデートが公開されてましたので、適用しました。

今回のアップデートは次期OS X(Mountain Lion)への移行用って感じですかね。
あまり大きな変更点も無さそうなので特に問題は起きないと思いますがしばらく利用して様子をみたいと思います。



2012年3月25日日曜日

新型iPadがやっと「商品出荷」されました。

新型iPad発売日から1週間、やっと「商品出荷のお知らせ」が来ました。

注文が少し出遅れたのもありますが「刻印サービス」で社名と名前を入れたのでその分遅くなったのか分かりませんが思いの外長く待たされました。(^^ゞ

今までアップル新製品(MacG4,G5や初代iPod,初代iPodNano,初代iPodTouch,初代iPad等々)を購入した時は全て発売日ゲットだっただけにやや悔しい感じですが、後継機って事で良しとしましょう。

拙作iOSアプリも新型iPadのRetinaディスプレイ(2,048×1,536)に対応させる作業も早く始めないと出遅れた感がありますし、いろいろ試してみたいですね。

海外発送なので手元に到着するまでにはまだまだ掛かりそうですが、到着日が楽しみです。

2012年3月8日木曜日

Xcode 4.3.1アップデート

Xcode4.3からXcode 4.3.1アップデートが公開されました。

App Storeアプリの「アップデート」タブでXcodeも通常のアプリ同様にアップデートできるようになっています。

それと、iOS5.1も開発者へ公開されたみたいですので、早速Xcode4.3.1へアップデートしてiOS5.1の検証作業も行わないと。。。

iOS5.0→5.1のバージョンアップですので大きな非互換は無いと思いますが、念のため弊社アプリで非互換が発生しないか確認したいと思います。

2012年3月4日日曜日

iPadがおかしくなったよ(;_;) - その後 -

iPadのiCloudバックアップからの復元ですが、アプリ数が多くて(1505個)全てのアプリが再ダウンロードされるまで18時間程掛かりましたが全て元通りに完全復旧しました。(*^_^*)

個々のアプリの保存データも元通りになりましたので読みかけの本やブログ記事とかの既読状態やブックマーク履歴等々、ほぼ全てトラブル前の状態に戻り今は何事もなかったように使えています。

逆に復元したことで不要なゴミデータも一掃されたようで空きディスク容量も2GB近く増えてましたので、まさに「災い転じて福となす」って感じですね。

これなら半年に一度くらいは不要データのゴミデータ掃除や安定化のためにリカバリ復元を行なっても良いかなって思いました。

2012年3月2日金曜日

iPadがおかしくなったよ(;_;)

昨日、iPadでAppStoreアプリでアップデートを適用していると急に画面が暗くなりセンターに待ちアイコン(渦巻きの様に回る)が出てなにやら再起動をしている感じ。

あれれ、フリーズして再起動がかかったのかと思いながら待っているとロック画面が表示されるも操作できずでまたしてもブラックアウトで再起動へ。

仕方が無いのでホームボタンとスリープボタン同時長押しでリセット。

しかし、状況は変わらずで再起動ループ状態で何もできない状況に陥りました。(T_T)

空きディスクが少ない状態で一気にアプリアップデートをやっていたんで空き領域不足でにっちもさっちも行かない状態になった可能性が高そうな予感。

取り敢えず、待てば状況が変わるかなぁとの淡い期待の元、この日はこのまま放置。

明けて本日見たら「直ってる」って状況を期待しましたがあっさり期待は裏切られ状況は変わらずでした。

これは最終手段の「リカバリ復元」しか無いかなと覚悟を決め、バックアップデータを確認すると結構昔のデータしか存在しない。(^_^;)

どうしようかと一瞬パニクりましたが、iOS5のiCloudバックアップを有効にしていることに気が付き、iCloudバックアップからの復元手順を調べるとなんだか行けそうな感じ。
└バックアップデータも昨日の不具合が発生する直前くらいの時間なのでほぼ元通りに復旧される筈。

早速、iPadをリカバリモードで起動しMacへ接続し「復元」を実施→30分ほどで復元が完了しiPadも正常に起動しましたのでiPad自体の故障では無くて一安心。

あとは復元し起動したiPadで初期設定に答えていきデータ復元をiCloudからの復元を選べば終了でした。

データが復元されるとトラブル前の状態に戻りましたがアプリ(ブックもかな)は再度ダウンロードされるようでアプリグループやアプリアイコンは元の位置に正しく表示されていますが「待機中...」の状態になっています。 あとは個々のアプリが全てダウンロードされれば完全復旧になると思います。

このiPadは64GBモデルでインストールしていたアプリ数が1400アプリ位はあったと思いますので全てダウンロードするには相当時間を要しますね。(多分、今日中には無理かな)

でも、それまでに使いたいアプリがあれば「待機中...」表示のアプリをタップすれば優先的にダウンロードされますので利用を継続しながら復元を待てますので利用者目線に立った良い復元方法だと思いますし素直に感心しました(^o^)

2012年2月29日水曜日

Macアプリ:Sandbox対応(その後)

Sandbax対応したMac用アプリ(二角取りSolitaire FREE)をアップルへアプリ申請していましたが、本日無事リリースされました。

私の実施したSandbox対応で問題無いことが確認できましたので、他のMacアプリについても順次Sandbox対応したいと思います。

折角なんでSandbox対応手順について書こうかなと考えましたが「アップルとの守秘義務違反」に該当するかどうか判断しかねるのとSandbox対応自体はアップル社提供の説明ページ(英語)に詳しい手順が記載されておりハマる点も少ないと思いますので、今回は見送らせてください。

このブログを書いていると「アップルとの守秘義務契約」に引っ掛からないかいつも考えてしまいます。
どこまでがOKでどこからが駄目なのか明確なガイドライン(日本語訳)の提供して欲しいですね。

2012年2月27日月曜日

Xcode 4.3:変更点とか。

Xcodeを最新の4.3へバージョンアップしてからアプリ申請まで一連の作業を実施しました。

まず、開発環境としてみた感じでは大きな機能追加もなく、操作性についても4.2.1と変わりませんので使用上変化に気付くことはありませんでした。 違和感なく移行できると思います。

Xcodeがインストールされるディレクトリが今までの/Developerディレクトリから1つのアプリケーション内にパッケージ化され/Developerディレクトリが不要になった以外には大きな変更点はないのかなと思っていましたが、アプリ申請の作業で大きな変更点がありました。

アプリ申請までの流れを簡単に手順を追って書きますと。。。

1.開発・テスト
・デバッグビルド→デバッグ実行でコード作成とテストを繰り返し実施。
2.Analyzeビルド
・Analyzeビルドにてメモリリーク等不正なコーディングの検出・改善。
3.リリースビルド確認
・開発・テストが完了すると次にリリースビルドでの最終確認を行います。
(目的・確認項目)
・リリースビルド設定で生成したアプリの稼動確認。
└リリースビルドでのみ発生するエラーもありますので。
・アプリ認証コードの正常動作確認。(テストユーザーでの認証)
└Macアプリ固有の確認項目
・複数OSX環境(SnowLeopard,Lion)での稼動確認。
4.Archive作成→アップル申請
・Archiveメニューでアプリarchiveファイルを生成。
・Organizerウインドウ:Archivesタブが自動的に開くので、検証→申請すれば完了。

Xcode 4.3では上記「4.Archive作成→アップル申請」の部分が大きく変更となっていました。
変更点について詳しくは書きませんが認証に使われる署名,AppStoreリリース以外の配布サポート等機能アップしている印象です。

それでも、AppStoreへの申請を選択していけば登録まで進められますので、最初こそ戸惑いますが機能的には問題無く動作しました。 変更点に対応するため何か特別なことをする必要はないかと思います。

Xcodeはバージョンアップの度に使い勝手が向上していますので今後の進化が楽しみですね。

2012年2月22日水曜日

Macアプリ:Sandbox対応

本日、Appleからの開発者宛のメールでMac用アプリケーションに対するSandboxing対応の期日が2012年3月1日から6月1日に延長になるとのお知らせがありました。

「んっ」何の期日って感じで完全に見落としていました。(^^ゞ

2012年6月1日以降のアプリ申請分からSandbox対応が必須になるとの事みたいです。

で、早速Sandbox対応について調査を行いまして、取り敢えず1本だけですが拙作Mac用アプリのSandbox対応が完了しました。

私のアプリ自体がハードウェアへの直接アクセスやネットワークアクセス等Sandbox対応で大きな影響がありそうなAPIを使ったアプリではなかったので、呆気無いほど簡単でした。(ソース変更不要)
└2本目以降では対応手順が分かっているんで1アプリあたり30分も掛からないと思います。

あまりにも簡単だったんで逆に不安になるくらいで、まだ見落としがあるかも知れませんから継続して確認中ですが、一応Lion環境とSnowLeopard環境の両環境で正常動作することまでは確認できました。

取り敢えず、先行対応したアプリを申請してみて正しくSandbox対応できているか確認・検証したいと思います。

2012年2月19日日曜日

Xcode 4.3:Open Developer Tool

前記事「Xcode 4.3インストール」でIcon Composer等の開発ツールを実行する方法について”疑問”としてましたが、Xcode開発ツールのメニューから実行できるようです。

メニューのXcode→Open Developer Toolから起動可能。

2012年2月17日金曜日

Xcode 4.3インストール

Xcode開発ツールの最新版であるXcode 4.3がMacAppStoreにリリースされていましたので、Xcode 4.2.1からのアップデートを行いました。

Xcode 4.3については同じ4系列なのであまり大きな変更は無いと思い、事前調査せずにいきなりインストールしてみました。
└念のため、/Developerディレクトリは別ディスクへバックアップ。

今までですとインストーラがダウンロードされて既存のXcodeをアップデートしますか?って感じでアップデートしていたと思うのですが、今回は何の確認もなく「インストール済み」状態になりました。

この時点で「あれっ!?」って感じでしたが/Developerディレクトリを見ても日付は更新されておらずアップデートされた形跡も無い!?

インストーラを手動起動しないといけないのかと/Applicationsディレクトリ内を確認すると「Xcode」ってのが出来てる。

このXcodeアプリケーションの「情報を見る」とバージョンは4.3となっている。 あれれ!?
試しにダブルクリックで起動するとXcode 4.2.1を「ゴミ箱へ移動」ダイアログで確認されるがゴミ箱には移動せずに「Using Xcode」のボタンをクリック。

いきなりXcodeが起動するじゃないか?? バージョンを確認すると4.3になってる!?

一瞬パニクりましたが、Xcode終了後改めて確認すると今までは/DeveloperディレクトリにXcode関連のアプリケーションやユーティリティ、各種関連ファイルがインストールされてましたが、Xcode4.3からはXcodeファイル1つにまとめられたようです。

/Applicationsディレクトリ内のXcodeファイルを選択し「パッケージの内容を表示」をすると中にはアプリケーションやら今までのファイル郡が存在してました。

Xcode4.3からは/Applicationsディレクトリ内のXcodeアプリケーション1つでまとめられたので今後のアップデートでは他のアプリと同様に処理されるようになるのか知れませんね。

1つにまとまることで分かり易くなったと思いますし管理もしやすくなったので良いと思います。

逆にパッケージ化されたことでXcodeパッケージ内のアプリケーション(例えばIcon Composerとか)を利用したい場合はどうするんだろうって疑問(→解決)も感じましたが、パッケージ内のIcon Composerのエイリアスを作れば良いんですかね。

それともXcodeツール内からアイコンを編集すればOKと言う考えなのかな?

ちゃんと事前調査せずにアップデートした私が悪いのでしょうが、大胆なディレクトリ変更にビックリの4.3アップデートでした。

Xcode:archiveファイルの「Validate…」処理でエラー

iPhone向けiOSアプリが完成したのでAppleStoreへ登録すべく、Xcodeでアーカイブ作成(Product→Archive)した後アップル社申請のためアップロードするためOrganizerウインドウのArchivesタブにて作成したiOSアプリのarchiveファイルに対して「Validate…」→「Submit…」するのですが、「Validate…」処理で下記のエラーが表示されます。

<エラー表示>
iPhone/iPod Touch: Icon.png: icon dimensions (0 x 0) don’t meet the size requirements. The icon file must be 72x72 pixels, in .png format

<エラー原因>
  • Mac OSX 10.7.3ではXcode 4.2.1に内包されている「Application Loader」(archiveファイルアップローダーアプリ)ではMacOSXとの非互換のため上記エラーが発生する。

<対処方法>
  1. Xcode 4.3へアップデート
  2. Xcode 4.2.1での暫定対応
    • 最新版の「ApplicationLoader_2.5.1.dmg」をダウンロードしインストールする。
    • Xcodeアプリケーションを再起動する。(上記インストール前に終了させた方が良いかも)

急いでたので「Xcode 4.2.1暫定対応」しましたが、Xcode 4.3へのアップデートもしないと。。。

2012年1月30日月曜日

「二角取りSolitaire」アプリリリース:cocos2d移植性の高さ

iPad版アプリ「二角取りSolitaire HD」を1月24日にリリースしました。

iPad版アプリ開発完了後、Mac版への移植作業を始めて1月28日にはMac App Storeへ「二角取りSolitaire」及び「二角取りSolitaire FREE」をリリースできました。(わずか4日違い)

実際にはアップル社によるアプリ審査がiPad版では1月18日に申請してApple Storeにリリースされたのが1月24日ですから約6日間で、Mac版については審査対象のアプリ数が少ないためか1月25日申請でリリースが1月28日でしたので半分の3日間でリリースされています。

このアプリはcocos2dと言う2Dゲームライブラリを使って開発していますのでiPad版のソースを元にMac版を作成した場合、比較的簡単にMacへ移植することができます。


iOSアプリとMacアプリの違いで一番面倒なのは画面の座標系の違いがあります。 iOSで使われているUIKitでは左上が原点となり下に向かってY座標は大きくなります。(コンピュータでは一般的な座標系かな)
それに引き換えcocoaでは左下が原点になりY座標は上に向かって大きくなる座標系で通常のコンピュータで利用する座標系とは反対になるので違和感を感じますが数学的には左下を原点とする座標系の方が正しいので座標変換とか数学的な変換を考えて左下原点を採用したのではないかと推測しています。

とは言え、cocoaの後に出来たiOSアプリ開発用のUIKitライブラリがなぜ左上原点を採用したのか気になるところですが他の携帯デバイス開発者(アップル以外の開発者!?)を取り込むためだったのか良く分かりませんが私的には間違った判断だったのではと思います。(^^ゞ
└それとも合理的に納得できるような理由があるのかな。。。


しかし、cocos2dを使って開発していればこのような座標系の違いを意識する必要もなく画面表示に関わる部分については殆どそのまま動作しますのでMac用に書き換える必要は殆どありません。
└cocos2dでの原点は左下原点になります。

イベント関連ではタッチイベントがマウスによるクリック操作に変更になりますのでメソッド名等の変更が必要になりますが若干の変更で対応可能です。

逆にMacへの移植時に変更が必要な点はiOSとMacでは利用できるcocoaライブラリに違いがありますので、UIxxxxで始まるようなメソッド・関数等はcocoaライブラリ(NSxxxx)のメソッド・関数へ変更する必要があります。 良くあるのは画像取得や変換、ファイル入出力まわりでしょうか。

また、ファイルの保存先であるディレクトリ構成も違いますのでMac版では保存先ディレクトリも変更が必要です。(結構簡単に対応可能)

あとはiOSとMacではユーザーインターフェイスが違いますのでMac版ではMac固有のユーザーインターフェイス(アバウト画面、ドロップダウンメニュー、ウインドウ制御)への対応が必要となります。

それと意外に面倒なのはiOSではアプリの認証(購入済みアプリであるかのチェック)に関する部分は特に開発者側で考慮する必要はないのですが、MacアプリではMac App Storeで購入したアプリの認証チェックを自前で用意する必要があります。(アップル社からは提供されない)

Mac App Store開設当初はアップルホームページに公開されたチェックの手順と簡単なコーディング例しか無く苦労しましたが、今では有志の方が作成したアプリ認証チェック用の関数がありますので比較的楽に実装できるようになりました。


iOSからMacへの移植作業ですが今回のアプリの場合では大体2〜3日間程度(有料版と無料版の2アプリ)で移植作業が完了できたのはやはりcocos2dライブラリの恩恵が大きいと思います。 特に描画関係のライブラリはcocoaとUIKitでは座標系以外にも殆ど違うって言っていいくらい変更が必要になりますので、その描画やアニメーション等のエフェクトに関する部分をcocos2dが吸収してくれますので効果は絶大だと思います。

cocos2dライブラリを使ってiOSアプリを開発している方は多いと思いますので、Macへの移植にも挑戦してみては如何でしょうか。

2012年1月7日土曜日

iOS5.0非互換:Twitter OAuth認証

TwitPic投稿機能実装のため「SAOAuthTwitterEngine」ライブラリにてTwitter認証しているアプリ(リアル黒板)がiOS5.0環境ではOAuth認証後ユーザー名にNilが返ってくるようになりました。

iOS5.0以外では正常にユーザー名が返されているようですので、iOS5.0環境下でのみ発生する現象でしょうか。

<対処方法>
・SA_OauthTwitterEngine.mファイル中のinitOAuthWithDelegateメソッドを下記の通り修正すれば正常動作致しました。

// self.requestTokenURL = [NSURL URLWithString: @"http://twitter.com/oauth/request_token"];
// self.accessTokenURL = [NSURL URLWithString: @"http://twitter.com/oauth/access_token"];
// self.authorizeURL = [NSURL URLWithString: @"http://twitter.com/oauth/authorize"];
 self.requestTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/request_token"];
 self.accessTokenURL = [NSURL URLWithString: @"https://twitter.com/oauth/access_token"];
 self.authorizeURL = [NSURL URLWithString: @"https://twitter.com/oauth/authorize"];

httpプロトコル部分を「https」に変更する。

2012年1月1日日曜日

2012年 明けましておめでとうございます。

新年明けましておめでとうございます。

本年もよろしくお願い申し上げます。