Amazon Campaign

ラベル iPhoneアプリ開発 の投稿を表示しています。 すべての投稿を表示
ラベル iPhoneアプリ開発 の投稿を表示しています。 すべての投稿を表示

2016年10月8日土曜日

Evernote Cloud SDK を Xcode8 で使う際の keychain error 回避方法

「Evernote Cloud SDK 2.0 for iOS」を利用しているアプリを Xcode8 へ移行すると、OAuth でのログイン後に下記エラーが発生します。

2016-10-08 10:02:39.407 VocabularyCards[27586:2139298] Error saving to keychain: Error Domain=com.samsoffes.ENSSKeychain Code=-34018 "errSecDefault" UserInfo={NSLocalizedDescription=errSecDefault} -34018
2016-10-08 10:02:39.409 VocabularyCards[27586:2139298] Error getting password from keychain: Error Domain=com.samsoffes.ENSSKeychain Code=-25300 "errSecItemNotFound" UserInfo={NSLocalizedDescription=errSecItemNotFound}

Xcode8 から keychain を利用する際はアプリのターゲット設定での宣言が必要になったようで、下記設定をすれば解決します。

TARGETS 設定 > Capabilities > Keychain Sharing を "ON"


2013年10月22日火曜日

Xcode5 スタックトレース(バックトレース)の確認方法

Xcode5 になってコマンドラインのデバッグツール gdb が標準でインストールされなくなってしまったので、エラーが発生した際には lldb を使ってスタックとレース(バックトレース)を確認します。

使い方はとても簡単です。エラーが発生したらデバッグコンソール(Debug Area)で "bt" (Back Trace) とタイプし enter するだけ。

下のwindowの緑色の文字 "(lldb)" のところに入力します。 

2013年7月24日水曜日

Java屋が日曜プログラミングでiPhoneアプリを開発してわかったこと

ネイティブに使える言語はJavaだけのボクがiPhoneアプリを開発してみてわかったこと。

開発にはお金が掛かる

開発にはお金が掛かります。皆さんご存知の通り Appleの開発者登録 "Apple Developer Program" への登録に年間 8,400円(2013年7月現在)、それに加えて開発環境であるIDEの "Xcode" は最新版でないとAppleへのアプリの申請が行えません。
"Xcode" 自体は無料ですが、最新バージョンを動かすためには基本 MacOS も最新版である必要があるので OS のバージョンアップ費用が掛かります。
さらには最新版の OS を使うためにはあまりに古い Mac では辛くなるので比較的早いサイクルでの Mac の買い替えが必要になります。

開発は短く

ボクの物覚えの悪さも手伝ってダラダラと開発してしまい結局開発を始めて1年以上掛かってリリースにこぎ着けたのですが、その間に利用している EvernoteAPI が 認証方式を OAuth に対応させたため大きくバージョンアップしました。その影響で大きなブログラムの改変を余儀なくされました。

また、アプリにおける UDID (端末識別ID)の扱いについての Apple の審査基準が変更になり、それまでアプリ広告で利用されていたものが利用できなくなってしまいました。
そのため導入していた広告用 SDK もバージョンアップが必要となり新たに組み込み作業が必要となりました。

さらには Xcode もバージョンアップし、それまで UI を実装するためのツールだった InterfaceBuilder が Xcode に統合されるなどし、インターフェースが大きく変更されたために慣れるのに手こずりました。

その他にもアプリによっては iOS のバージョンアップが影響します。
こういったアプリに関連するライブラリや開発ツールのバージョンアップが頻繁に発生するため、開発期間が長くなればなるほど本質ではない部分で余計な作業が発生してしまいます。開発期間は短くした方が効率的です。

やっぱりメモリ管理は意識が必要

Java のメモリ管理はガーベージコレクションがやってくれますが、iOS での Objective-C はやってくれません。キチンと意識して実装していなかったボクは当然のことながらデバッグ時にクラッシュ頻発で苦労させられました。
初めてアプリ開発を行う際は Objective-C の参照カウント方式のメモリ管理をキチンと勉強してから実装しましょう。

MacBookAir2010でも開発できる

当然ですが "MacBook Air" でも開発できます。しかもボクのは 2010 モデル、最低スペックのメモリ 2G です。
パフォーマンスについては開発したアプリがシンプルだったということもありますが実端末向けに最適化ビルドする際に多少時間が掛かる以外は特にストレスはありませんでした。

また、ディスプレイの解像度については MacBookAir は特に縦の解像度が 900pixel しかないので Retina の場合は iPhone4 (960pixel)でも足りません。ですが、エミュレータの設定で表示倍率を指定できるので精細な表示確認を必要としない限りは問題ありません。

表示倍率を 50% にすれば iPhone5 での表示でも収まります。

やっぱり楽しい

日曜プログラムで開発するには色々と手間やコストが掛かりますが、リリースできれば、たとえ使ってくれるユーザが少なくても自分で好きなように作ったアプリを使ってもらえるのは楽しいです。当然、アプリを育てて多くのユーザに使ってもらえるようになれば収入になるという野望も持てますしね。

以上のような苦労をして作成した「Vocablary Cards」をぜひ使ってみてください。
Evernote上のノートを単語帳として表示できるアプリです。
何かの勉強をテキストファイルにまとめているような方であれば、ほんの少しの手間で単語帳にすることができます。

Vocabulary Cards - Evernoteで単語帳 - Isao Tanji






2013年1月18日金曜日

EvernoteAPIでのノートの検索

Evernoteと連携するiPhoneアプリを作成中で、先日、ようやく認証方式をOAuthに移行できました。ただ、移行後はノートの検索が行えなくなってしまい、ようやく解決したので共有します。
ノートの検索を行うためには2つのステップが必要です。

  1. 開発者サポートへ連絡し、アクセス権限を「フルアクセス」へ変更してもらう。
  2. Web画面の設定で、該当アプリの認証許可を1度削除する。


開発者サポートへ連絡し、アクセス権限を「フルアクセス」へ変更してもらう。

開発にあたっては連携用のAPIキーを取得しますが、デフォルトの権限は「ベーシック」となっており、”ノートの作成、ノートブックとタグの検索”しかできません。これを、”ノートの変更、検索、取得”も行えるようにするためには、サポートへ連絡して「フルアクセス」権限にしてもらう必要があります。

該当のFAQ
http://dev.evernote.com/intl/jp/support/faq.php#permdenied


Web画面の設定で、該当アプリの認証許可を1度削除する。

続いて、WebのEvernoteへアクセスします。開発用のアカウントのはずなので、sandboxへのアクセスとなります。画面上のメニューより「設定」->「アプリケーション」と選択すると、OAuthで認証許可を行っているアプリの一覧が表示されます。

権限「ベーシック」での表示

ここで、該当アプリを選択して「アクセスを取り消す」を実行し、再度開発中のアプリ側でOAuth認証を行い、認証トークンを再取得することで無事「フルアクセス」権限となります。

エミュレーター上でアプリを削除すると、端末側では認証トークンも削除されるため、再認証することでトークンが再発行されたものと思い込み、なかなか解決できずに苦労しました。。。

2012年11月26日月曜日

Evernote の OAuth対応 SDK は Snow Leopard ではコンパイルできない

EvernoteがAOuth認証へ移行になったので、iOS用のクラウドAPI SDK(Evernote Web Service API SDK) を最新版の「Evernote SDK for iOS version 0.2.1」へ入換えたところ、Xcode 3.2.5 ではコンパイルができなくなってしまいました。


<コンパイルエラーのメッセージ>
/evernote-sdk-ios/EvernoteUserStore.m:68:0 /Users/isatanisatan/Documents/WordCard5/evernote-sdk-ios/EvernoteUserStore.m:68: error: incompatible block pointer types initializing 'void (^)(struct EDAMBootstrapInfo *)', expected 'void (^)(struct objc_object *)'

正直、勉強不足で原因は不明なのですが " incompatible block pointer types initializing" と言っているので言語的な互換性がなさそう。
そこで、Xcodeを最新版の 4.5 へアップデートしようと思ったのですが、MacOS が Lion 以上でないとインストールできません。

ボクの MacBook Air 2010ではパフォーマンスが心配で最新OSへ上げることはためらっていたのですが、パフォーマンス的に悪い評判は聞かないし、ちょうどiCloudも使ってみたかったので、良い機会だと思い Snow Leopard へ移行しちゃいました。

結果、無事コンパイルすることができました。心配していたパフォーマンスについても、今のところ目に見えて遅くなるようなこともありません。
Xcodeのビルド処理も今まで通りだし、eclipseの起動速度も今までと同じように感じられます。

パフォーマンスを気にして躊躇している方はアップデートを検討してみてもよいと思います。

Amazon_ad