カテゴリー別アーカイブ: iOSアプリ開発

Todayウィジェットを使ったアプリランチャー&アイコン作成 iOSアプリのAppCallerがリジェクトされました。

今朝、iPhoneが鳴っていて着信の電話番号を見ると海外から。
どうやらサンフランシスコかららしい。
Appleからだなぁと思って、とりあえず出てみました。

ぼくの拙い英語で、挨拶を交わして、本題へ。
アプリの機能について説明したいという用件であると伝えられました。
英語での会話は、簡単なもの以外に対応するのは難しいので、あとは日本語で大丈夫か確認したところ快くOKとのこと。
頑張ってみますという答えと共に普通にわかりやすい日本語での説明を受けました。

どこがリジェクトの理由になるかは、想像通りでした。
というのも、以下の記事をすでに読んでいたからです。

Apple Rejects Launcher, The App That Lets You Launch Other Apps From iOS 8 Notification Center | TechCrunch

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

審査が、長すぎる。自分のアプリのiOS 8での不具合をまとめておく。

iOS 8が出て、ぼくがリリースしているアプリも、それに合わせてバージョンアップで対応しなければならない不具合がチラホラありました。
もちろん、すぐに修正をして順次申請をしているのですが既に10日以上経っても反応がありません。

どういった不具合があるかだけでも、共有させていただこうと思います。

everPost

everPost – Evernoteをお手軽操作。検索してジェスチャー。整理も簡単。 App
カテゴリ: 仕事効率化
価格: ¥300

everPostというiOSのEvernote検索アプリです。

  • ログアウトなどのアラートが出てボタンを押しても実際には機能していない不具合。
    iOS 8で、BlocksKitが動作していないのが原因です。
    これは、9/26公開のVer. 2.5.0で解消されました。

しかし、追加でバグがありましたので修正バージョンを提出中です。

  • 保存された検索とノートブックとタグのキャッシュを途中でやめてしまう不具合。
    保存された検索をキャッシュする機能をデバッグ用に解除していた部分を残していたっぽい。最悪なミスです。
    ノートブックとタグのキャッシュについては、別の要因に起因しておりVer. 2.5.0で修正しています。
  • 詳細表示をONにした状態での検索結果の描写が遅くなる不具合
    非同期で更新するコードを書き忘れたことが原因。キャッシュ読み込み時に遅くなります。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

AppCallerというiOS8向けアプリのランディングページを公開しました。

AppCallerというiOS8向けアプリのランディングページを公開しました。

AppCaller

Appcaller ios8 01

AppCallerというアプリです。
現在審査中ですので、審査が通過してから色々と記事を公開する予定です。

簡単な概要だけサクッと書きます。

このアプリは、アイコン作成アプリです。
iOS8は、機能拡張という仕組みが加わってアプリ間での連携が強化されました。
その中の一つにToday Extensionという通知センターを使った連携があります。

この機能をサポートしていて、Todayからアイコンをタップしてアプリを起動することができるのが特徴です。

Appcaller SS 1

なかなか使い勝手が良いアプリですので、リリースまでもう少しお待ちください。

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Swiftで、UICollectionViewCellのviewWithTagで返ってくるUIViewがnilの原因

UICollectionViewCellのデザインなんかは、Storyboardで済ますことが多いと思います。ぼくの場合は、画像表示のUIImageViewやUILabelなどを配置して、再利用のIdentifierを設定します。

この時に、それぞれ配置したUIViewに対してTagを設定しておくことで、collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell!メソッド内で、viewWithTagを呼び出してデータの内容と結びつけるようにしています。

Objective-CのときもそうでしたしSwiftでも同様です。

でも、Swiftでコードを書いていると何だかCellのviewWithTagがちゃんと動作していないような動きをしていました。
調べてみると、同じような状況の人もいるようだったのですが、たぶん対応可能な問題だろうと思いました。

ios – viewWithTag in UICollectionViewCell returns nil in Swift (until cell is reused) – Stack Overflow

で、色々と試したのですがStoryboardで設定したCellをちゃんと取得していないのが原因だと推測できる動きをしていました。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Photoshop CCで、簡単に アプリの広告GIFアニメーションを作る。

アプリの広告を出そうと思って、バナーを作成していました。
テキストベースの簡単なものなら、Webで設定するだけで作れちゃうのですが一応画像のパターンも試しておきたいなぁということで、簡単なものを作成。

AdwordsとAdmobに出稿していたのですが、よく調べるとGIFも使えるようだったのです。

ということは、アニメーションで表現できるのかと思って早速アニメーション画像を作ってみました。

ここを見るほうが早いと思いますが、MacのPhotoshop CCで、簡単にできたのでメモ的な記事を書いておきます。
フレームアニメーションを作成する方法 (Photoshop CC)
続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Swiftで、セレクタ(@selector)を指定する。

最近、Swiftでコードを書きまくっています。
新しいことを始めると、面白くて仕方ないですね。

書く度にアドレナリンが出ているのが分かります。
この調子で、メインの部分はSwiftで全て書いてアプリをリリースする予定です。

Objective-Cからの流れでSwiftを書き始めて感じているのは、受け入れやすいなぁということです。
すんなりと、移行できそうです。

Objective-Cで書かれていたUIKitなどのFrameworkもほとんどSwiftに対応しているようなので、その点もすんなり移行できそうと思う部分の一つです。
学習コストがそれほど高くないと感じるからでしょうか。

コードも簡潔でさっぱりして、読みやすいと思うことも多いですし今のところSwiftの方がいいなぁと思うことの方が多いです。

でも、Objective-Cならこうやって書いていたという部分がSwiftではコロっと変わっているとこも結構あります。

体験しながら体で覚える方が性に合っているので、そういうところは場当たり的に潰していって学習しています。

で、セレクタを呼ぶというのも一つ引っかかったところでした。
Objective-Cでは@selectorで、セレクタを指すのですがSwiftではどうするのか。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Appleのアプリのリジェクトの理由が書いてあるWebページ

アプリを公開しようと思って、申請したのはいいものの、1週間後にリジェクトの通知・・・。
これは、度々経験しております。

アプリのバグで、落ちる不具合でのリジェクトもありましたし、説明不足によるリジェクトもありました。
また、あるときはAppleとの関連性がないという文言を加えなければならなかったり、クジを引くようなアプリはダメだと言われたりと色々とリジェクトされてきた記憶が蘇ります。
最近は、審査が少し早くなったのでマシになったのですが、審査が長い上にリジェクトされると結構キツイものがあります。

そういうことを少なくするためかどうかわかりませんが、Appleからリジェクトする理由について、主なものをまとめたWebページが公開されています。

Common App Rejections – App Store – Apple Developer

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

2時間ほど悩んだ。ABPeoplePickerNavigationControllerは先に初期化しておこう。

どうでもいいというか、同じ現象に悩んでいるひとはほとんどいないと思うことで、2時間ほど悩んでいました。

連絡先の情報にアクセスしたくて、Appleが用意している簡易なUIであるABPeoplePickerNavigationControllerを使いました。

このABPeoplePickerNavigationControllerで、電話番号やメールアドレスなど表示したい内容を指定するdisplayedPropertiesというプロパティがあります。

ここに、それぞれの表示したい要素に対応したint型の数値をNSNumberでラップして、配列として渡します。

そのときに、先にプロパティを作ってあとでABPeoplePickerNavigationControllerを呼び出すようにして、プロパティは呼ぶメソッドによって変更するような設計にしていたのですが、何故か起動後毎回1度だけ、何も表示されない状態になっていました。

// このコードだとバグになる。
- (void)showAddressBook{
    // ABPeoplePickerNavigationControllerの初期化より先に、先にkABEmailPropertyやkABPhonePropertyを使う。
    NSArray *properties = @[@(kABPersonEmailProperty),@(kABPersonPhoneProperty)];

    ABPeoplePickerNavigationController *apnvc = [ABPeoplePickerNavigationController new];

    apnvc.displayedProperties = properties;

    [self presentViewController:apnvc animated:YES completion:nil]; 

}

2回目以降は、ちゃんと指定した表示内容が表れるのですが、最初だけ表示されないのがほんとに謎でした。

きっとバグだと思っていたのですが、どうやらぼくがこのAPIを上手く使いこなせていないだけでした。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

UIWebViewで、CSSを読み込む。

UIWebViewでCSSを読み込む方法です。
ちょっとメモ代わりに記事にします。

いくつか方法がありますが、Javascriptを実行するのが一番手っ取り早いでしょう。

Bundle内のファイルのパスを取得して、そのファイルのテキストを読み込んだstyleかファイルへの絶対パスをsrcとしたlinkタグを追加するjavascriptをUIWebViewが実行します。

続きを読む

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly

Cocoapodsの動作が変わってた

iOSのアプリ開発では、CocoaPodsでライブラリ管理をしているのですが、基本的には使うことがメインです。
自分で作ったツールとかも、たまにアップしていますがメンテナンスはほとんどしていません。
必要に応じて、改修するといった感じです。

で、最近いくつか使いまわせそうなクラスを作ったので自分用にCocoaPodsで管理しておこうと思って調べてみると状況が大きく変わっていてCocoapodsのTrunk APIを使ってアップする仕組みになったようです。
ほぼ、pod installしかしていないので今日気がつきました。

まず、アカウントを作る必要があるようですので登録します。

pod trunk register ここにメールアドレス アカウント名

認証用のメールが来るので、それを開いて認証します。

そのあと、podspecファイルのバリデーションなど済ませて、準備が整ったら以下のコマンドでアップ。

pod trunk push ここにspecファイルのパス

これだけで終わりのようです。

CocoaPods Guides – Getting setup with Trunk

これからも更新を続けていきますので、Feedlyへの登録をお願いします!

follow us in feedly