openSensorAppIos
https://github.com/oubakiou/openSensorAppIos
Cocoa Touch Frameworkではないです。センサーとアクションを組み合わせて設定すればそういう感じに動きます。GetWild退勤とかができます。スタンバイ画面には空のUIImageViewを置いてるので好きな壁紙を入れてビルドすれば良いと思います。
実装済のセンサー
##Brightness(ディスプレイ輝度センサー)
https://github.com/oubakiou/openSensorAppIos/blob/master/openSensorApp/Sensor/Brightness.swift
ディスプレイ輝度(部屋の照度)を感知して、設定した閾値を上回るか下回るかしたら反応します。部屋が暗くなったらGet Wildを流したり、部屋が明るくなったらラジオ体操を流したりできます。
##Proximity(近接センサー)
https://github.com/oubakiou/openSensorAppIos/blob/master/openSensorApp/Sensor/Proximity.swift
iPhoneにキスをするとマーマレードボーイの挿入歌が流れたり、iPhoneに歯を見せると歯痛を心配してもらえたりします。
テストのために購入して聞きましたが面白いのでサンプルを聞いてみると良いでしょう。
##Shake(シェイクモーションセンサー)
https://github.com/oubakiou/openSensorAppIos/blob/master/openSensorApp/Sensor/Shake.swift
iPhoneを振ると何か出ます。
##HttpReachability(HTTP疎通センサー)
https://github.com/oubakiou/openSensorAppIos/blob/master/openSensorApp/Sensor/HttpReachability.swift
登録しておいたURLへのHTTPリクエストが失敗するとIt's My Lifeが流れたりします。
実装済のアクション
##PlayAudio(音楽の再生)
https://github.com/oubakiou/openSensorAppIos/blob/master/openSensorApp/Action/PlayAudio.swift
音楽を再生します。注意点としてDRMで保護された曲は再生できません。
##OpenUrl(URLを開く)
https://github.com/oubakiou/openSensorAppIos/blob/master/openSensorApp/Action/OpenUrl.swift
ULRを開きます。対象のURLがユニバーサルリンクに対応したサイトの場合は対応したアプリが開くんじゃないかと思います。カスタムURLスキーマでも開けると思うので電話とかもかけられると思いますが、サーバが落ちたら掛かって来る無言電話とかこわいです。
新しいセンサーの作り方
- sensorNameList.plistに新しいセンサーの名前を追加してください
- Sensorディレクトリの下にHoge.swiftクラスを作成してください。なおNSObjectを継承しSensorProtocolに適合している必要があります。
- センサーの設定を行う画面としてHogeSettingViewController.swiftとxibを作成してください。UIViewControllerを継承し、SensorSettingViewControllerProtocolに適合している必要があります。
Sample
新しいアクションの作り方
- actionNameList.plistに新しいセンサーの名前を追加してください
- Actionディレクトリの下にFuga.swiftクラスを作成してください。なおNSObjectを継承しActionProtocolに適合している必要があります。
- アクションの設定を行う画面としてFugaSettingViewController.swiftとxibを作成してください。UIViewControllerを継承し、ActionSettingViewControllerProtocolに適合している必要があります。
Sample
注意点
引き続きバックグラウンドでの動作にはまだ対応していません。たぶんGPSセンサーの追加と同時ぐらいにやると思います。各種設定をDictionaryで保持してますがそのうちクラスになると思います。
リジェクトされなければそのうち自力ビルド出来ない人もAppStore経由で使えるようになると思います。