Category: ios

  • 肥大化したiTunesライブラリを劇的に容量削減する方法

    macとiPhoneを使っていると、App Storeからダウンロードしたアプリがどんどん母艦のiTunesのライブラリに保存されていって、macのストレージを圧迫していることがあります。同期するときのアプリ選択も、数が増えすぎるとやりづらいです。

    過去に一度だけダウンロードしたアプリや、ダウンロードしたけれどいまいちですぐに消してしまったアプリがずっとiTunesライブラリに残り続けているのは無駄なので、削除してしまうことをおすすめします。以下やりかた。
    iTunesのバージョンは12.5.1.21でやってます。

    1. まず、iTunesを起動します。
    2. 左上の再生ボタンの下あたりにあるプルダウンから、「App」を選択。
    3. 「ライブラリ」のリストから「App」を選ぶと、右側にライブラリに保存されているアプリの一覧があります。何年も前にダウンロードしたアプリなんかが、ずらっとでているはず。
    4. 不要なアプリを選択して、右クリック。「削除」を選択
    5. 「選択したAppをライブラリから削除しても良いですか?」という旨のダイアログが出るので、「Appを削除」を選択。
    6. 「選択したAppをゴミ箱に移動しますか?」というダイアログが出るので、容赦なく「ゴミ箱に入れる」を選択。
    7. あとはFinderで通常どおり「ゴミ箱を空に」すればOKです。
    最近ではアプリは一本数百MB以上あることもよくありますし、必要なものはApp Storeから随時ダウンロードすれば良いので、ローカルのipaは特に理由がない限り、マメに整理するのが良さそうですね。
  • Xcode 4.2でiPhone 3G/armv6用にビルドするときの設定の要点だけ

    Xcode 4.2にして以来?、iTunes ConnectにSubmit時にarmv6用のバイナリも
    含める必要があるよ!と怒られることがある。
    “At least one of the following architecture(s) must be present: armv6″みたいな感じのエラーがiTunes ConnectへのSubmit時に出る。
    デバッグ用の実機検証のときも、この設定をしないと転送後すぐにRunning Finishedとか
    出て実機できないことがある(iPhone 3Gとかの場合)。このときはこの設定を疑うようにするというメモ。
    1.BUILD SETTINGのArchitecturesの部分に$(ARCHS_STANDARD_32_BIT)だけが設定されていることが原因。この項目をクリックして「Other…」を選択
    「+」をクリックして”armv6″を入力して”armv6″と”$(ARCHS_STANDARD_32_BIT)”の2行が設定されている状態にする
    2.その下にある”Build Active Architectures Only”とかいてあるところが
    “No”になっていることを確認する。
    これで上記のArchitectures両方(つまりarmv6とarmv7)用の
    バイナリが生成されるようになります。
    (補記)
    Xcode 4.2で生成されるプロジェクトには、Info.plistの”Required device capabilities”に
    “armv7″と入っているみたい(つまりarmv6を利用したiPhone 3Gは除外されている)。
    iPhone 3Gなどのarmv6デバイスも対象とするには、上記に加えてこの設定を除外する必要があるようです。
  • iTunesConnectで”application executable is missing a required architecture”って怒られるときのXcode 4の対応の要点だけ

    iTunes ConnectでSubmitするときに、

    “application executable is missing a required architecture”と怒られるときがあります。どうも古いXcode 3系のプロジェクトをインポートすると起こるみたい(ちゃんと確認はしてない)

    Build Settingsで”Build Active Architecture Only”という項目を探し、配信用のターゲットの項目を”NO”に設定する。そうすると全ての有効なアーキテクチャに対してビルドできるので、エラーが回避できる模様。
  • Android Bazaar & Conference Summer 2011に行ってきた所感要点だけまとめ

    Android Bazaar and Conference Summer 2011というAndroidのイベントに参加してきました。2011年7月17日@早稲田大学。

    細かいことは置いておいて、気付いたことの要点だけ書く。聞いたセッションは以下。
    主にDeNA、GREE、CyberAgentのセッションを聞いてきて、DeNAは2セッションあってどちらもngCore関係(2つ聞いたんだけど、ほとんど内容同じだった。)、GREEはGREE Platform、CyberAgentは自社の開発環境や体制についての話。

    (more…)

  • OSX Lionから”Mac”が消えたことを深読みすると見えてくる未来

    OSX LionのGM seed(「ほとんど完成版」ていう意味で、問題がなければこのまま出荷される)が出たそうで、OSX Lionの一般リリースも今週末だとか来週の7/12だとか噂が出始めた。

    OSX Lionの目玉は以前のエントリでも述べたLaunchpadやMission Control、マルチタッチジェスチャーなどで、これはiOSで培われたフルスクリーンUIの操作性をMacの世界にも取り込んだことだけど、今回はOSX Lionでこっそりと行われた大きな変更、OSXから”Mac”の文字がはずれたことに注目したい。
    (more…)

  • iOS Notification(通知)バッジナンバー表示の要点だけ

    iOSのNotificationでは、アプリケーションアイコンの右肩に数字(バッジ)を表示することができるけど、その数字を消去するときにちょっとした落とし穴があるのでメモ。まずはUIApplicationオブジェクトを取得して直接バッジを設定する場合。

    (1)アプリケーションオブジェクト(UIApplication)を通じて直接、バッジ設定する場合
    [UIApplication sharedApplication].applicationIconBadgeNumber = badgeNumber;

    この場合は、badgeNumber(NSInteger)の数字が正の数であれば、バッジ数字が表示、ゼロであればバッジアイコンは消去される。
    ではローカル通知を通じた場合はどうなるか。

    (2)ローカル通知オブジェクト(UILocalNotification)を通じたバッジ設定の場合。ちなみにローカル通知はiOS4から利用可能
    NSInteger badgeNumber = 1;
    UILocalNotification *notification = [[UILocalNotification alloc] init];
    notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:30];//30秒後
    notification.alertBody = @”ローカル通知メッセージ;
    notification.applicationIconBadgeNumber = badgeNumber;
    [[UIApplication sharedApplication] scheduleLocalNotification:notification];
    [notification release];

    badgeNumberが正の数であれば、通知時に該当アプリのバッジにその数字が設定される。しかしゼロの場合は、直前のバッジ数字がそのまま残る。消去したい場合は、applicationBadgeNumberに負の数を設定すれば良い。ちなみに(1)のパターンのときもゼロでなく負の数を与えてもバッジは消える。
  • iCloudで訪れたiOSの「終わり」

    先日のWWDC 2011で事前の予告通り、Mobile meの後継になるクラウドサービスとなる”iCloud”が発表された。
    そして発表のKeynoteの中で語られたのは、iCloudは単なるネットサービスの枠を越えて、Appleの戦略上とても重要な位置を占めるものということだった。

    「10年前にAppleはデジタルハブというビジョンを掲げた。Macが様々なデジタル機器、メディアの中心になる」とジョブズ氏は語った。当時はまだやっとADSLが普及し出した頃だったしiPhoneみたいな小型の機器に一昔前のスーパーコンピューターに匹敵するみたいな性能が搭載されるなんてまだまだ先の話と思われた。レインポーiMacの発表はぶつぶつ切れるアナログモデム経由で見たんだった。

    (more…)

  • WWDC 2011:「iPhoneでなければiPhoneじゃない」なのか

    「iPhoneでなければ、そんなのiPhoneじゃないんです」という奇妙なフレーズのCMをAppleが放映中だけど、日本時間6月7日午前2時からのWWDC 2011で発表される予定のMac OSX LionおよびiOS 5、iCloudでその本当の意味が分ることになるのかもしれない。
    (more…)

  • Xcode 4のシングルイウンドウUIに垣間見るOSX Lionの本気度

    まもなくAppleの開発者向けイベント、WWDC 2011が6月6日(日本時間7日深夜)から10日の予定で開催される。注目はもちろんiPhone 5、iOS 5が発表されるのかというのが一つとしてはあるけれど、もう一つの注目ポイントとしてMac OSXのメジャーバージョンアップ、Mac OSX Lion (10.7) の発表がある。

    Mac OSX Lionは2010年の10月に、その概要が発表された。特徴は、iPadに見られるようなフルスクリーンUIをOSXの世界にも導入した「Launchpad」や「フルスクリーンアプリケーション」。これは単純にiPhone、iPadの人気にOSXが便乗しようとしているだけにも見えるけれど、Appleはこの大胆な変更に本気で取り組んでいて、これでiOSのエコシステムをOSXの世界にも広げようとしているように見える。

    (more…)

  • UIWebViewのバウンスアニメを無効にする要点だけ

    アプリ内でUIWebViewを使うときに困るのが、タッチ操作でスクロールできてしまうこと。
    ネイティブUIにUIWebViewが入りこんでいることが分かって、UIの統一性が失われてしまう。

    WebViewがドラッグ動作で範囲外までスクロールできる「バウンス動作」が無効にできれば良さそうだけど、、ということで調べたら、出てきたのでメモ。

    http://stackoverflow.com/questions/500761/stop-uiwebview-from-bouncing-vertically
    for (id subview in webView.subviews)
      if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        ((UIScrollView *)subview).bounces = NO;

    要はUIWebViewsのsubViewsで取りだした子要素の一覧からUIScrollViewのインスタンスを取り出し、
    それのbouncesプロパティを無効にする。これがうまくスクロールをdisableにできれば、気兼ねなくネイティブUIとのハイブリッドが採用できそう。

    まだ実際には試してないけど後で試してみる予定。