2016年6月29日水曜日

こうべ避難ナビ

こんにちは!

今回は先日リリースしたiOSアプリ「こうべ避難ナビ」を紹介したいと思います。

どんなアプリ?


「こうべ避難ナビ」はカンタンに言ってしまうと避難施設への経路検索アプリです。

神戸市のオープンデータで公開されている421箇所の避難施設の情報を収録していて、
マップ上に現在地と避難施設を表示しますので一目で最寄りの避難施設を見つけることができます。


こんな人にオススメ!


もしもの時どこに避難すればいいかわからない!
どうやって行けばいいかわからない!
そんな神戸在住の人にオススメです。


こうべ避難ナビに出来ること


・避難施設までの経路検索

現在地から避難施設までの経路をマップ上に表示することができます。

避難したい施設のアイコンをタップして
「避難する!」ボタンをタップ
地図上に避難施設までの経路を表示します。
これで迷わず避難できますね!










・避難施設への電話

アプリから避難施設へ電話をかけることができます。
施設の状況などの確認にご使用ください。

電話を掛けたい施設のアイコンをタップして
「電話する!」ボタンをタップ
電話番号を確認して発信します。
これで避難施設の状況が確認できます!




・避難施設のフリーワード検索

神戸市が公開しているオープンデータには421箇所もの避難施設があります。
その中から参照したい施設の情報をカンタンに検索することができます。


画面右上のリストボタンをタップ!
画面右側から施設一覧が出てきます。
 検索バーに任意の検索ワードを入力すれば
施設情報を絞り込むことができます!



・津波発生時でも避難出来る施設の絞り込み

津波発生時どこに避難すればいいかご存知でしょうか?
ご安心ください。画面右下の「津波ボタン」をタップすることで
津波発生時でも避難可能な施設のみ表示することができます。

画面右下の津波ボタンをタップ!
津波発生時でも避難可能な施設のみ表示します。
もう一度津波ボタンをタップすると
全ての避難施設を表示します。
























最後に

「こうべ避難ナビ」はもしもの時を考え、出来るだけシンプルに使い易さを考えて作りました。
このアプリを使用するようなことが起きないにこしたことはありませんが
もしもの時は皆様のお役に立てれば幸いでございます。

ぜひインストールしてみてください。もちろん無料です!


それじゃまた。


「こうべ避難ナビ」は↓からダウンロードできます!


2016年6月22日水曜日

「こうべ避難ナビ」リリースしました!


こんにちは!
本日、弊社開発のiOSアプリ「こうべ避難ナビ」をリリースしました!
App Storeから無料でダウンロードできますので、ぜひインストールしてください!

アプリの内容や使い方はまた次回書こうと思います。





それじゃまた。

2016年6月15日水曜日

【iOS】MapView上のAnnotationを長押しするとデフォルトのピンに戻る

MapView上に配置したAnnotationを長押しするとデフォルトの赤いピンに戻ってしまう問題にぶち当たったので回避方法をメモ。


詳しくはstackoverflowにありますが、MapViewのデリゲートのviewForAnnotationメソッド内で
MKPinAnnotationViewを生成しているのが原因みたいです。
MKPinAnnotationViewではなくMKAnnotationViewを生成してやるように変えれば回避できました。



それじゃまた。

2016年6月10日金曜日

【iOSアプリ】LaunchScreenに設定した画像が消える



iOSアプリを作っていて、起動画面に設定した画像が消えてしまう現象がおきました。

↓みなたいな感じです。

通常の起動画面
画像が消える

原因はわからないのですが、画像の名前を変えて再設定するとなおります。
因みにシミュレータでは発生しないです。

でもしばらくするとまた発生してしまうんですよねー。
ちゃんとした対応方法ご存じの方教えていただけると嬉しいです!

それじゃまた。




2016年6月2日木曜日

XamarinでCocoapodsのライブラリを使う

iOSアプリを作る際、多くの場合Cocoapodsを使うかと思います。
Xcodeで開発する場合は以下のサイトが詳しいのでそちらを参考に。


※El Capitanの場合は以下


今回はXamarinでiOSアプリを開発する際に、CocoaPodsライブラリを使用する方法を紹介します。

1.Objective Sharpieインストール

XamarinのドキュメントサイトからObjective Sharpieをダウンロードしてインストールします。


2.Objective Sharpieでバインディング

Xamarin.iOSで作ったアプリ(C#)からObjective-Cで作られたライブラリを呼び出すには
バインディングの定義ファイルを作らないといけないのですが、Objective Sharpieを使うとバインディングの
定義ファイル、ライブラリ本体(lib*.aファイル)を自動で作ってくれます。


・CocoaPodsのサイトで使用したいライブラリを探します。


・ターミナルを起動し、任意のディレクトリで以下のコマンドを実行します。


$ sharpie pod init ios LGSideMenuController

※今回は「LGSideMenuController」を入れます。


成功すると↓のような感じになります。


Setup completed
** Searching for requested CocoaPods ...
** Working directory: 
**   - Writing Podfile ...
**   - Installing CocoaPods ...
**     (running `pod install --no-integrate --no-repo-update`)
[!] Unable to load a specification for the plugin `/Library/Ruby/Gems/2.0.0/gems/cocoapods-deintegrate-1.0.0`
Analyzing dependencies
Downloading dependencies
Installing LGSideMenuController (1.0.10)
Generating Pods project
Sending stats
Sending stats
Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

** 🍻  Success! You can now use other `sharpie pod` commands.



成功すると「Pods」ディレクトリができます。













ターゲットのiOSバージョンを変更する場合は、Podsディレクトリ以下のxcodeprojファイルを開いて
Deployment Targetを変更します。


















ターミナルを起動し、以下のコマンドを実行します。

$ sharpie pod bind


長々とログがでますが「Done.」と出てきたら成功です。

Binding Analysis:
  Automated binding is complete, but there are a few APIs which have been flagged with [Verify] attributes. While the entire binding should
  be audited for best API design practices, look more closely at APIs with the following Verify attribute hints:

  MethodToProperty (4 instances):
    An Objective-C method was bound as a C# property due to convention such as taking no parameters and returning a value (non-void return).
    Often methods like these should be bound as properties to surface a nicer API, but sometimes false-positives can occur and the binding
    should actually be a method.

  Once you have verified a Verify attribute, you should remove it from the binding source code. The presence of Verify attributes
  intentionally cause build failures.
  
  For more information about the Verify attribute hints above, consult the Objective Sharpie documentation by running 'sharpie docs' or
  visiting the following URL:

    http://xmn.io/sharpie-docs

Submitting usage data to Xamarin...
  Submitted - thank you for helping to improve Objective Sharpie!

Done.



成功するとライブラリ本体(lib*.a)とバインディング定義ファイルが作られます。























あとは出来上がったファイルを使ってXamarin StudioでBindings Libraryプロジェクトを作れば使えるようになります。

3.シミュレータで動作するライブラリを生成

前述までの手順で作ったライブラリは実機では動きますが、シミュレータでは動きません。

出来上がったライブラリをlipoコマンドで確認してみると対象アーキテクチャに「i386」が含まれていないことがわかります。
シミュレータで使えるようにするには「i386」が含まれている必要があります。




lipo -info libLGSideMenuController.a 

Architectures in the fat file: libLGSideMenuController.a are: armv7 arm64 




ですので、少々面倒くさいのですが、Podsディレクトリ以下のxcodeprojファイルを開いてシミュレータ用にライブラリを生成しなおします。















上記ショットの通り、「Build Active Architecture Only」を「No」にして「Valid Architecture」に「i386」を追加します。

あとはシミュレータを対象にビルドを実行すればシミュレータで動作するライブラリが出来上がります。









build/Debug-iphonesimulatorディレクトリ以下にライブラリが出力されてます。

lipoコマンドで確認すると対象アーキテクチャに「i386」が含まれていることがわかります。

lipo -info libLGSideMenuController.a 

Architectures in the fat file: libLGSideMenuController.a are: i386 x86_64 


シミュレータで実行する際はこのライブラリを使えば動きます!

しかしもうちょっとスマートなやりかたないんですかねー。
ご存知の方教えてくださいm(_ _)m



それじゃまた。