Takahiro Octopress Blog

-1から始める情弱プログラミング

AFNetworking 2.6.0でやってみよう自己証明書でのSSL通信

AFNetworking2.5.xまでの自己証明書でのSSL通信

これまでAFNetworking2.5.xを使ってきた筆者ですが、開発中は当然のことながら自己証明書を利用することがあります。
まずはこれまでの書き方をAFHTTPSessionManagerを例に確認してみましょう。

1
2
3
4
5
6
// AFHTTPSessionManagerをインスタンス化
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"application/json", nil];

...

Xcodeが正常かチェックしましょう!

今、話題のXcodeGhostってなに!?

中国で出回っている改ざんされたXcodeのことだそうです。
App Storeから一般公開向けのXcodeをダウンロードしたり、Apple DeveloperサイトからDeveloper向けの最新版をダウンロードするのであれば、特に何の問題もないでしょう。
『いや、実はどこどこから…』なんて方がいたら、早速チェックしてみましょう。

ユーザとして気をつけるのは、怪しいアプリはもちろんのこと、話題として上っているアプリはきちんと対応が完了しているのか確認してみるくらいでしょうか。
Appleも感染アプリの削除に全力で取り組んでいるでしょうし、様子を見るしかなさそうですね。

SFSafariViewControllerを使ってみよう!

iOS9から導入されたSFSafariViewControllerを使ってみよう!

さて、iPhone6s, iPhone6s Plusの発売を心待ちにされている開発者の皆さんを横目にブログを更新したいと思います。
と言っても、筆者は土曜日にはiPhone6sをGETできるはず…。

本日はSFSafariViewControllerを触ってみたいと思います。
SFSafariViewControllerはアプリ内でWeb画面を表示したいときに使うことをAppleが奨励しています。これにより、今まで自作アプリからSafariを起動させていたのに対して、アプリ内でSafariを呼び出すことが可能となりました。
気をつけて欲しいのは、 カスタマイズはできない ということです。
例えば、UIWebViewやWKWebViewでやっていたような『Web側から document.location = …. を実行することでネイティブ側で何か処理をさせる』といったことはできません。
あくまでも 単なるWebサイトの表示 に利用します。

iOS9でWebViewの性能を測ろう!

iOS9で使えるWebViewで各種テスト

さて、iOS8が出た時にも結果を載せましたが、iOS9でもやってみようと思います。
iOS9では SFSafariViewController というものが増えましたし、UIWebViewおよびWKWebViewがSafariに対して、どの程度の性能を示すのか改めて調べておくことも重要だと思います。

早速結果を記載していきます。

HTML5の結果

HTML5testの結果を記載します。
テストは全てiOS9, iPhone6端末で実施しています。

  • UIWebView: 391
  • WKWebView: 407
  • SFSafariViewController: 407
  • Safari: 409

上記のような結果が得られました。
各種WebView間での差異は全て Storage の差です。

iOS8でrequestLocationが使える!?

実はiOS8.4.1でrequestLocationが使える

さて、今回はたまたま気づいたバグ?の紹介です。
皆様、ご存知の通り, iOS9から requestLocation なるものがCoreLocation.frameworkに追加されました。
これにより、1回だけ現在地を取得する処理を自作せずにframeworkに任せることができるようになりました。

しかし、iOS9からとアナウンスされているものの、実は iOS8.4.1 でも利用できました。
コードは下記になります。

Google Sign-In SDK for iOSを使ってみよう!

Google Sign-in SDKを使ったOAuth認証をやってみよう!

さて、本日はGoogle Sign-Inを利用したOAuth認証をやってみようと思います。
最近、Google Developers Consoleの画面が完全に一新されていました。
以前であれば、Google Developers ConsoleにOAuth2.0のiOSのクライアントIDを設定したときに、クライアントIDだけでなく、クライアントシークレットなども表示されていました。
それが、 クライアントIDiOSのURLスキーム のみになっていました。
これは完全にGoogleがGoogle Sign-Inを推奨している証であろうということで、早速使い方を見ていきたいと思います。

iOS9 App Transport Securityについて

iOS9のApp Transport Securityについて調べてみた

さて、今月、最終日になんとかブログ更新です。
来週、新型iPhoneの発表が期待される中、開発者間で話題となっているApp Transport Security(以下、ATS)について調べてみました。

ATSの詳細はiOS9 ATS問題などで既に詳しく書かれていますので、割愛します。
どちらかと言うと実開発よりで話をしたいと思います。

これまで筆者はiOSアプリを作り続けてきたわけなんですが、実は会社では所謂ハイブリッドアプリと呼ばれる、 WebViewを用いたアプリ の開発をすることが多く、古くからあるUIWebViewはもちろんのことWKWebViewも利用してきました。
正直、これまで特別な場合を覗いて、 HTTPS を意識することはありませんでした。
しかし、昨今のセキュリティ問題から周りの考え方も変わりつつあります。
それをさらに一押したのが、iOS9のATSではないかと考えています。
今後は、グローバルに空いているサーバに対しては HTTPS しか許されないことになることでしょう。

Kontakt.ioのSmart Beaconのパラメータを書き換えてみよう!

Kontakt.ioのSmart Beaconのパラメータの書き換え方法

さて、続きを書いていきます。
前回、Kontakt.ioのSmart Beaconを検知するところまで書きました。
本記事では、必要に応じて、パラメータを変更する方法について書きたいと思います。

手順はKontakt.ioの公式ページのBeacon Configurationに書かれていますが、/device/updateに引っかかったり、REST APIを叩こうとしたりすることもあるかもしれないので、紹介します。(筆者は初めきちんと読まずにいろいろと実行してしまいました…)

では、早速書いていきましょう。

Kontakt.ioのSmart Beaconを使ってみた

Kontakt.ioのSmart Beaconを使ってみよう

さて、久しぶりの更新です。
実は先日、以前から気になっていたKontakt.io Smart Beaconを購入してみました。
あまり海外の製品を購入することがないので、届くか心配でしたが、ばっちり自宅に届きました笑

なぜ、Kontakt.ioのSmart Beaconに着目していたかというと、筆者が知る限り、最も発信出力(TxPower)を弱くすることが可能なBeaconだからです。
仕様書を見てみると、出力を-30[dBm]にまで下げることができ、その電波距離は実に2[m]程度らしいです。

また、SDKが充実しており、発信出力を自由に変更できるところもポイント高いですね。
さて、今回は基本的な実装から見て行きましょう!(何回かに分けて記事にしようと思います。)

AndroidでRealmで保存した値を確認しよう!

Android Realm Browserを使おう

さて、前回の記事で実装したRealmですが、値を確かめたいことがあると思います。
その方法について見て行きましょう。

Android Realm Browserを利用することでアプリ上で直接、値を確認することが可能です。

実装手順

1. GradleScripts > build.gradle(Module: app) のdependenciesを修正 compile 'com.github.dmytrodanylyk.realm-browser:library:0.0.2'dependencies { ... }に追加します。
2. RealmFilesActivityを起動する処理を追加