ログスマートフォン用の表示で見るぴよログ↓に移転したのでこっちは更新されません、多分。この広告は、90日以上更新していないブログに表示しています。→iOSのアプリでサーバーサイドと連携するにも関わらず明示的なユーザー登録を必要としないアプリがある。nanapiのアンサーなどがそれにあたる。ひとつ端末でしか使わないという世界観でアプリを作ればユーザーに明示的にログインさせる必要はないのでユーザー体験もよくなる。そのようなアプリケーションを実装するときの1アイデアを試してみたのでここに書き残しておく。端末固有のIDユーザーを特定するためには固有のIDが必要になる。端末固有のUDIDはiOS6から使えなくなったし、本当にハードウェア固有のIDを使ってしまうと端末を変更したときの移行処理がややこしくなってしまう気がする。固有識別子の話はこちらに詳しい。iOSでの端末固有識別子の話。なるようになるといいね↑の投稿にもあるように、UUIDを使うのがいい気がする。初回起動時の自動ユーザー登録の際にUUIDを発行して何らかの形で保存。次回以降の起動したときは保存しておいたUUIDでログイン、といった流れになる。Keychainでは生成したUUIDはどこに保存するのがよいか。思い浮かぶのはNSUserDefaultsだが、これでは2つ問題がある。セキュリティ面で問題がある(かもしれない)データが永続化できない1つ目はパスワードなどの機密情報を平文で保存することになるので望ましくないという、まあよくある話だし重要な点。2つ目はデータの永続化。NSUserDefaultsはアプリをアンインストールしたときに一緒に消えてしまうため、再インストールしたときにその情報は消えてしまう。なってしまうと、これまでと同じユーザーとしてログインすることはできなくなってしまう。Keychainがこれらの問題を解決してくれる。セキュリティ的にも良いし、アプリが消えてもデータを残せる。Keychainについてはこちらが詳しい。いかんせんCベースの生APIを叩くのは骨が折れる。ラッパーライブラリがいくつかあるのでそれを使えば良い。見た中ではNSUserDefaultsライクにこれが一番よさそうかな。sevenサンプルユーザー管理にはParse.comを使ってみることにした。データストアの検証も兼ねてね。Parse.com自体のユーザー登録やセットアップについては割愛するし、サンプルなのでネットワークがないなどのエラー処理は書いていない。signIn]とやらを呼んでいて、このUserクラスは自前のクラスとなっている。}}signInではKeychainに値を取りに行き、ユーザー名とパスワードがあればその値を使ってPFUserを作ってログインし、なければsignUpを呼ぶ。UUIDString]でユーザー名とパスワードを生成、サインアップが成功したらKeychainに値を保存しておく、という流れになる。このような方法を取ることで、起動した時点でユーザー登録が完了してログインした状態にすることができるし、アプリを一旦削除しても入れなおせば再び使い始められるアプリができた。実装の仕方はこれだけではないかもしれないけれど、まあまあの線じゃないかなと個人的には思っている。あとは機種変更時の移行を実現できれば、スマートフォンのみを使ったログインなしで使えるサービスにできそうだ。»プロフィールid:xoyipちょっとしたことでも書く方針のハードル低めブログです。読者になる注目記事はてなブログをはじめよう!xoyipさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。