Amazon Campaign

ラベル iOS の投稿を表示しています。 すべての投稿を表示
ラベル iOS の投稿を表示しています。 すべての投稿を表示

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年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






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の起動速度も今までと同じように感じられます。

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

2012年11月17日土曜日

EvernoteのAPIにおける認証方式がOAuthに変更になったようです

ノロノロとiOSでEvernoteのクラウドAPIを使ったiPhoneアプリを作っているのですが、11月に入ってから認証処理が上手くいかなくなってしまいました。
調べたところ、APIでの認証方式がOAuthに移行し、id, passwordでの認証ができなくなってしまったようです。

ユーザ名とパスワードによる認証から OAuth 認証への移行

http://dev.evernote.com/intl/jp/documentation/cloud/chapters/Transition.php

Evernote日本語版Blog

http://blog.evernote.com/jp/2012/11/02/10913

「ぺんぎんまむ」さんのBlogでとても分かりやすく解説されています。

http://penguin-mam.com/archives/314/

あーぁ。やっと組み上がった認証フォームが不要になってしまいました。。。
APIキー取得時に申込める開発者向けのメーリングリストに入っていれば9月の時点でお知らせが来ていたようなので、今後のために今から再登録することにします。

Amazon_ad