WWDCにてiOS6が発表されました。
なんとTwitterに続いてFacebookもOSレベルでサポートされることになりました。
そんなタイミングでFacebookSDKの話をしちゃうUTOです。こんばんは。
今回の話はFacebook公式SDKを
Gitからダウンロードして使うときに
ここは設定したほうがいいよっという部分を明記したいと思います。
ZIPを展開して「src」フォルダのなかに必要なソースがすべて入っています。
プロジェクトで使用したときはこのフォルダ内をすべて登録すればOKなのですが
そのままだと以下の部分にて不満点が発生します。
1.FacebookログインがアプリジャンプまたはWebジャンプになっており
マルチタスクアプリにし、URLスキームを登録しておかないとうまく動かない
2.上記対応をした後、アプリ内ログイン画面にて、ログインボタン押下して画面遷移するまでの間に
インジケーターが表示されないため、何回かログインボタン押下することができ、エラーになる。
まず1の対応をします。
Facebook.mの331行目にある
- (void)authorize:(NSArray *)permissions
ここの中で以下を修正しましょう
[self authorizeWithFBAppAuth:YES safariAuth:YES];
↓
[self authorizeWithFBAppAuth:NO safariAuth:NO];
以上です。
これでログインダイアログ表示っという処理を行うと
アプリ内でポップアップビューが表示されるようになります。
2.の対応ですが
これはSDK側がミスしているので手直しが必要です。
元々インジケーターを表示するように設定しているのですが、
・表示する処理のメソッドをコールしていない。
・非表示処理にてインジケーターのHiddenプロパティをYESにした後HiddenプロパティをNOにする処理がない。
っとなっています。
FBDialog.mの440行目にある
- (void)hideSpinner
このメソッド内の
_spinner.hidden = YES;
これを削除しましょう。
直前にてstopAnimationが実行されているので
そもそもインジケーターはアニメーション停止させれば非表示になりますので
HiddenプロパティをYESにする必要はありません。
そしてログインボタンを押下するといった通信を開始するときにコールバックされる
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
のなかで
[self showSpinner];
を追加してあげましょう。
これでFacebookSDKが用意するダイアログ画面での通信中はインジケーターが表示されるようになります。
おまけ
インジケーターの種類は初期化メソッド内で指定されているので
タイプを変更することができます。
368行目あたりにinitメソッド内で定義されています。
_spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:
UIActivityIndicatorViewStyleWhiteLarge];
ここで変更が可能です。
最近XCodeでプログラムを書いていないから
こんな感じでリハビリ中!
プライペートでMacMiniを購入したので
時間が作ること出来れば個人でアプリを作っていきたいですね~
- 関連記事
-
スポンサーサイト
trackbackURL:http://appteam.blog114.fc2.com/tb.php/233-1db9c11c