UberのボタンSDKをつかってみた
Deeplink Advent Calendar 2015の12/7用の記事です。 UberがボタンSDKをリリースした(Uberアプリにディープリンクで遷移する)ので、つかってみたよ的な感じです。 qiita.com
去年、Uberが米国内で、アフィリエイトプログラムを開始しました。
他サービス内からUberのタクシーを呼び出せるAPIを用意して、配車される度に開発者には$5入る仕組みです。
ユーザーは割引料金でタクシーを呼ぶことができるので、他サービスも導入をしやすそうです。
位置情報を扱うサービスにはたまらないですが、現時点ではこのアフィリエイトプログラムは日本では使えないようです。
さらに最近、乗車リクエストボタンを簡単にアプリ内に設置できるSDKをリリースしました。
今回は、この便利なSDKを使ってボタンを実際に表示させてみることにします。
Uberデベロッパー登録
まずは https://developer.uber.com/dashboard からUberのデベロッパー登録をします。
※ 手順の画像は、スマホWebになってます。ログインの際のID, パスワードを何回も間違えたら、ログインできなくなってしまいました。セキュリティしっかりしてますね♪
- ログイン後、アプリ情報を登録します
- すぐにAppIDが発行されます(図中のピンク色で囲まれた部分)
これでデベロッパー登録は完了です。どうです、簡単でしょう。
アプリの設定
次にSDKの設定を行っていきます。
swiftアプリに実装してみました。
なお、SDKは uber/rides-ios-sdk · GitHub にあがってます。
サンプル付きでかなりわかりやすいです。
SDKはCocoaPodでもCarthageでも取得できます。
自分はCocoaPodでインストールしました。
pod 'UberRides'
iOS9の場合、Uberをディープリンクで呼び出させるようにinfo.plistに下記の設定をしておきます
<key>LSApplicationQueriesSchemes</key> <array> <string>uber</string> </array>
さて、実際に記述するコードですが、まずはAppDelegate.swiftに下記の記述をします(xxxxは先ほどdeveloper登録した際に取得したAppID)。
import UberRides func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { RidesClient.sharedInstance.configureClientID("xxxx") return true }
そして、ボタンを掲載するViewController内に下記のコードを記述します。
import UberRides let button = RequestButton() // ボタンの色が黒 // let button = RequestButton(colorStyle: .White) // ボタンの色を白にする場合はRequestButtonの引数に色を指定する view.addSubview(button)
これだけでボタンが表示されます。
とっても簡単です。
ちなみにアプリに渡すパラメータは下記のように設定できます。
button.setProductID("restaurant0123") // 適当なID button.setDropoffLocation(latitude: "35.407", longitude: "139.4157", nickname: "吉野家 原宿竹下口店") // タクシーの降りる場所
ちなみに
button.setPickupLocation(latitude: "35.409", longitude: "139.4123", nickname: "代々木公園")
で乗車場所を設定できるっぽいですが、設定された状態でアプリを開いても「現在地」が乗車場所になってました。なんでやろ
実際の挙動
ボタンは下記のようなデザインです。
クリックすると、Uberアプリに遷移し、下記のように行き先が定まった状態になってます。ちなみにアプリが端末内になければストアページに遷移します。
感想
簡単でびっくりしたぜ
【swift】classを呼び出して、interface builderを開く(nibNameを使わずに)
ニーズはないと思います。 忘備録です。
行うことは下記。
classを指定して呼び出す
呼び出し先のclass名とxibファイル名を同じにする
前提
target名:Test
swift class名:SwiftViewController
1.classを指定して呼び出す
swiftのclassはObjective-Cと違い、名前空間を指定しないといけないです。
swiftの名前空間はモジュール名(target名)なので、今回は、Test.SwiftViewController
がclass名となります。
また、class名は下記のような形式での呼び出しも可能です。
_TtC<プロジェクト名の文字数><プロジェクト名><クラス名の文字数><クラス名>
今回の場合は、_TtC4Test19SwiftViewController
となります。
println(NSClassFromString("SwiftViewController")) //nil println(NSClassFromString("Test.SwiftViewController")) //Test.SwiftViewController println(NSClassFromString("_TtC4Test19SwiftViewController")) //Test.SwiftViewController
呼び出し
var testSwiftAnyObjectType: AnyObject.Type = NSClassFromString("Test.SwiftViewController") var testSwiftNSObjectType: NSObject.Type = testSwiftAnyObjectType as! NSObject.Type var testSwift: AnyObject = testSwiftNSObjectType() self.presentViewController(testSwift as! UIViewController, animated: true, completion: nil)
2. 呼び出し先のclass名とxibファイル名を同じにする
呼び出されたclassと同じ名前のxibファイルが存在している場合、自動でそのファイルを読み込もうとします。
これはswiftも同様です。
ただし、swiftの場合、前述のとおり、Test.SwiftViewController
がclass名となってますので、
xibファイルをTest.SwiftViewController.xib
とすることによって、自動でファイルが読み込まれます。
ちなみに、 呼び出されるfile側で、
@objc(SwiftViewController) class SwiftViewController { ... }
とすることによって、xibファイル名をSwiftViewController.xib
とすることができますが、このクラスは名前空間に属さなくなります。
また、target名内のアルファベット文字以外は、_(アンダーバー)に書き換えないといけないと気をつけましょう。
参考にさせていただいた記事
http://anton0825.hatenablog.com/entry/20140422/1406165310
http://tsuchikazu.net/swift_namespace/
「紹介したい料理店」のiPhoneアプリが「ニューリリース」に選ばれました!!
こんばんは!寒いですね。
実はまだ告知はあまりしていませんでしたが、
「紹介したい料理店」のiPhoneアプリをこっそりとリリースしてました。
もう少したってから告知をしようと思っていたのですが、
なんと、、
「紹介したい料理店」のアプリが
ニューリリース
に選ばれましたー!!
なので嬉しくて、思わずブログに書いちゃいました(^_^;)
今年は、アプリリリース以外にもいろんな事を考えておりますので、
ぜひ楽しみにしていてください。
今後とも「紹介したい料理店」をどうぞよろしくお願いいたします!
東京都内の料理店のみ紹介されるように設定ができるようになりました!!
今日は雨ですねぇ。
急に寒くなってまいりました。
さて、α版ではありますが、「東京都内の料理店のみ紹介」されるように設定できるようにいたしました。
店舗数の関係で東京限定となっております。
他の地域の方々、申し訳ございませんが少々お待ちください。
紹介したい料理店、これからもどんどん改善していきますので、ご意見多数お待ちしております!!
食欲の秋!紹介したい料理店がメディアにとりあげられました☆
秋ですねぇ。
食欲の秋ということで、おいしいもの食べたいものです。
そんなときはぜひ、紹介したい料理店をご活用くださいね!
メディアにとりあげていただきましたので、ご紹介させていただきます。
コンセプトやご意見など丁寧に記事を書いていただいて、本当にうれしいです。
ひきつづきがんばっていきますので、どうぞよろしくお願いいたします。
internet watch 様
【やじうまWatch】1人につき1つのお店しか紹介できない、究極のグルメサイトが登場 -INTERNET Watch
白ペンギン 様
1人1店しかオススメできない実名グルメサイト「紹介したい料理店」
紹介したい料理店が、NAVERまとめのグルメサイト・アプリまとめに掲載されました!!
紹介したい料理店が、NAVERまとめのグルメサイト・アプリまとめに掲載されましたー うえ~い(´∀`σ)σ
紹介したい料理店以外にも素敵なグルメサイト・アプリがたくさん掲載されていますので、ぜひご覧くださーい♪
素敵な料理店を見つけよう!!グルメサイト・アプリまとめ - NAVER まとめ