Mac OSでも楽チン Facebook編 その1 NSSharingService

前回タイトルを楽チン ツイートにしてしまったので、フェイスブックにかえるとなんだけヘンテコなタイトルになってしまった。

OS X 10.8.2 になって Facebook連携にも対応した。10.8で既にTwitter連携は搭載済だったが、Facebookも同様に楽チンに連携できるのか試してみた。
もちろん、FBアカウントは取得済みで、アカウントを「システム環境設定:メール/連絡先/カレンダー」に登録しておく必要がある。(ちなみにFBのテストアカウントは登録できなかった。)
まずはTwitter同様にNSSharingServiceから。同様にNSSharingServiceDelegateプロトコルを追加して、

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
	NSSharingService *service = [NSSharingService sharingServiceNamed:NSSharingServiceNamePostOnFacebook];
	service.delegate = self;
	[service performWithItems:[NSArray arrayWithObject:@"hello"]];
}

すると、

ダイアログが表示された。左上で公開範囲を指定できる。
一つ分からないのだが、FBでは本文中のURLにプレビューがつくようなのだが、これを実現する方法がわからない。Safariの共有から投稿するとそのページのプレビューが一緒に投稿できるが、performWithItemsにNSURLを突っ込んでもNSStringで文中にhttp://から始まる文書をいれても同じようにならない。さてどうするのかな?

10.8 Mountain Lion の secure.log どこいった?

SSHのアクセスログを見ようと思ったら/var/secure.logが見つからない? あれ?どこだっけ?って探すと、 OS X 10.8 Moutain Lionからはどうやら、/var/system.logに吐かれるようになったみたいだ。微妙に変わっているなぁ。

それから、Moutain Lionにアップブレードをする時に、OS Xで「ウェブ共有」+ PHPでウェブを公開している場合は、一旦共有をやめてからアップグレードした方が懸命かと思われます。アップグレードをすると、なぜか一旦ApacheのモジュールからPHPが除外されます。そのためPHPファイルにアクセスすると設定によってはそのままPHPのソースコードが丸見えになり、パスワードなどを記載したコンフィグファイルなどは大公開の大判振る舞い状態になっちゃいます...

UISearchBarDelegate textDidChangeが通知しない?

iOSのアプリケーションをiOS6, iPhone5に対応させるべくアップデートをおこなったが、バグ?という現象にであった。
UISearchBarDelegateのsearchBar:textDidChange:が通知されない。といってもソース上から値を代入した時(self.searchBar.text = @”hoge”など)の話であって、キーボードからのテキスト編集では通知される。もちろんiOS5などでは通知されている。ちなみにUITextFieldTextDidChangeNotificationも同様に通知されない。searchBarTextDidEndEditing:は通知されている。とりあえず、別方法で処理するしかなさそうだ。

Xcode4.5, iOS6 SDK

App sandbox not enabled またまたドはまり

Xcode4.5に上げて、MacAppStore用のアプリケーションをアップデートするべくオーガナイザからサブミットした。
前回の「ヘルパーアプリ使用時のValidationエラー Invalid Code Signing Entitlements.」問題が解決されていることを期待したが、残念ながら全く変わっていなかった。
なので前回同様の処理をしてバリデーションを通して、サブミットした。しかしすぐにiTunesConnectからメールレス、「App sandbox not enabled」としてバイナリーリジェクトをくらってしまう。設定を変えてしまったかと思い幾つか試してみるが、何度やっても同じ。なので、前回のアーカイブと内容をくらべてみた。しかしほとんど違いがみつからない。

もちろんxxx.entitlementsも

<key>com.apple.security.app-sandbox</key>
<true/>

となっている。
しかたがないので、一旦Xcode上でヘルパーをデベロッパ用でコードサインを使って、SignatureのCodesign applicationをオンして、アーカイブ。ところがアーカイブを見ると前回のサブミットには入っていない「archived-expanded-entitlements.xcent」がリソースに入っている。内容はxxx.entitlementsと同じ。

アーカイブを開いてヘルパーの

  • _CodeSignature
  • embedded.provisionprofile

を削除した後にターミナルでコードサインし、無事レビュー待ちになった。泣けてきた。

Mac OS X 10.7.5, Xcode4.5, OS X 10.8 SDK

[その後]
10/23 無事通過しました。20日待ち。長っ!

Twitter API ルール変更 RSS配信の終了

API1.1のその後情報なのだが、さらにRSSの配信を打ち切ることに決めたそうだ。具体的にはAPIからのデータ取得形式をJSONのみにするということなのだが、これでは既存のRSSリーダーでは読めなくなってしまう。更新をわざわざ手動確認するのも面倒なので、本家アプリのみだとツイートの存在を忘れちゃうかもしれないな。

しかし、Safariも6 からバッサリとRSSリーダを切り落としてまった。むしろこちらの動きの方が気になるくらい。あれだけWeb2.0だとかサービスだとかともてはやされたのに徐々にフェードアウトしていくのだろうか?

とりあえず、CocoaからのJSONパースは json-framework がよさそうだ。とても楽にパースできる。

下記で大変親切に説明してくれている。

JSONをパースしてくれるCocoaライブラリ – おいしいCocoaの飲み方

return top