読者です 読者をやめる 読者になる 読者になる

酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iPhone

otoolを使ってiOSアプリで使っているframeworkを解析する

ipaファイルの自動生成をするようになると、ipaファイルそのものの解析を依頼されることがあります。僕はバイナリアンではないのでipaファイルを投げられてもよくわかりません。 ipaファイルの正体は、zipファイルの拡張子を変えただけであるものというのは…

Xcode 6.3が公開されました

なんでApple Watch発売直前になってiOS 8.3とXcode 6.3を提供を開始したの……という気もするのですが、今朝方iOS 8.3が公開されました。同時に、Swift 1.2が使えるようになるというXcode 6.3も公開されました。 リリースノートは以下のリンクからみることがで…

AppStoreで公開中のiPhoneアプリを取り下げる(非公開にする)方法

以下の作業は2015年4月1日時点でのiTunes Connectの日本語版UIを元にしています。本記事ではAppStoreで公開しているiPhoneアプリを取り下げる方法を紹介します。 iTunes Connectにログインして「マイApp」をクリックします。 マイAppを選択すると、複数のiPh…

とあるiOSアプリでApp Groupsの処理を追加したらビルドエラーが発生した話

Today Extension対応やAppleWatch対応のためか、iOS 8以降ではApp Groupsと呼ばれる仕組みが追加されました。今回、弊社で開発中の「hoge.app (仮名)」でも採用することになりました。 「Xcodeでのビルドを自動化するxcodebuildコマンドとIPAファイルを作成…

Mac OS XでXamarin.iOSのクラスライブラリをNUnitを使ってコマンドラインでテストする

勘違いしていたので、以下取り消します。 Mac OS XでXamarin Studioを使ってXamarin.iOSでiOSアプリを開発していると、Jenkins等のCIツールを使ってビルドの自動化をする際にコマンドライン(ターミナル)からユニットテストを動かしたい要望が出てきます……よ…

Azure Mobile Services(モバイルサービス)の通知ハブに登録されているiOSデバイスに向けてAPNsを使ってプッシュ通知する

スマートフォンを使っていると当たり前の機能のうちに「プッシュ通知」があります。 たとえば、iPhoneやiPadでGmailアプリなどのメールアプリを使っていると、メールを受け取るとユーザーに向けて「メールを受信しました」とプッシュ通知されます。 プッシュ…

電気通信大学の休講情報アプリについて

これは「UEC Advent Calendar 2014」の20日目の記事です。UECについては別の方が書かれていると思うのですが、UECとは東京都調布市にある電気通信大学のことです。 先に書いておくと、僕はUECの現役学生でもOBでもありません。iPhoneで使える「休講情報 for …

Xamarin.iOSでMD5やSHA1のハッシュ値を計算する

MD5(Message Digest Algorithm 5)は、入力に対して128ビットのハッシュ値を出力するハッシュ関数のことで、不可逆的な一方関数を用いているところから認証などで広く使われています。他にもダウンロードしたファイルが第三者によって作者(配布者)が意図しな…

Xamarin.iOSを使ってiOSデバイスの機種名を取得するライブラリを作りました

過去に「Xamarin.iOSでiOSデバイスの機種名(モデル名)を取得する - 酢ろぐ!」でiOSデバイスの機種(モデル)名を取得する方法を紹介しました。この方法は機種名を取得するものと言うよりかはiPhone7,1といったデバイスモデルの識別子を取得する方法でした。 …

Xamarin.iOSでHtml Agility Packを使ってHTMLをスクレイピングする

この記事は「Xamarin Advent Calendar 2014 - Qiita」の10日目です。 Xamarin Advent Calendarは、Xamarinを使ったアプリ開発のTipsが1日1つずつ紹介されています。この記事はXamarin.iOSについて書いていますが、他の方はXamarin.AndroidやXamarin.Formsな…

Xamarin.iOSで新しいプロジェクトを作成する(Unified API)

過去にXamarin.iOSとXamarin.Macは別々のコードでメンテナンスされていて、さらに64bit対応されていませんでした。それを受けて、2014年9月に品質管理と64bit対応のため統合された「Unified API」が登場しました。過去のものは「Classic API」という位置付け…

Azure Mobile ServicesからiOSアプリにプッシュ通知が送れない問題(追記あり、解決済み)

昨日1日Azure Mobile Services(以下、Mobileサービス)からiOSアプリにプッシュが送れない問題で悩んでいて解決しないので、ちょっと問題の切り分けのために現状を書いていきます。 iOSアプリに対してAzure Mobile ServicesのNotification Hubを使ってプッシ…

Xamarin.iOSでサイズを指定して空の(または単色の)UIImageオブジェクトを生成する

本記事では、Xamarin.iOSを使ってUIImageオブジェクトをプログラム(コード)だけで動的に生成する基本となる方法を紹介します。Objective-Cで実現する方法については下記の記事をご覧ください。 サイズを指定して空のUIImageオブジェクトを生成する - iOSアプ…

Xamarin.iOSで画像(UIImage)をカメラロールへ保存する

Objective-Cで画像を保存するにはUIImageWriteToSavedPhotosAlbum関数を使いました。Xamarin.iOSで同じことをしたかったのですが検索能力が低くて該当するメソッドを見つけることができませんでした。 UIImageWriteToSavedPhotosAlbum関数に相当するメソッド…

Xamarin.iOSでDictionary<TK, TV>型からNSDictionary型オブジェクトへ変換する

TinamiをみるアプリをXamarin.iOSで作りました。実験的な作り方をしていて、まだほとんど何もできません(Tinamiのランキングを見て、ふぁぼるくらいです)。 Illust CatcherKENJI WADAエンターテインメント無料 このアプリでは、アプリの設定値を保存するのに…

Xamarin.iOSで画像をUIImageViewに表示させる

Interface Builderを使用せずに、スクリーン上にイメージを表示させる方法です。UIImageViewを生成してUIImageオブジェクトを設定します。 var imageRect = new RectangleF(0f, 0f, 320f, 109f); using (var myImage = new UIImageView(imageRect)) { myImag…

Xamarin.iOSで自動ロック(スリープモード)に突入させないようにする

セキュリティ、および節電の為にiPhoneやiPadを放置していると自動ロックがかかり、スリープ状態に突入します。 自動ロック(スリープモード)を無効にする 動画閲覧アプリなど長時間ユーザーが触らないことが想定できます。デバイスを触らずに放置していた際…

Xamarin.iOSの開発Tipsの記事まとめ

日本語で書かれたXamarin.iOSについてのTipsがあまり検索で引っかからないので忘備録代わりにメモしています。基本的時自分用に書いているのでザックリとした記載になっていますが、Xamarin.iOSでなにかやりたいという時の逆引きとして使っていただけると嬉…

Xamarin.iOSで指定したフォント名で描画する

UIFontを生成する際にUIFont.FromNameメソッドを使うことで指定したフォント名のUIFontオブジェクトを生成することが可能です。UILabelのFontプロパティに生成したUIFontオブジェクトを設定することで指定したフォントで文字列が表示されます。 特にXamarin.…

Xamarin.iOSでAsset CatalogからUIImage型の画像を取得する

下図のように「NotFoundImage.imageset」という名前でAsset Catalog(xcassets)があったとします。 以下のコードでUIImage型の画像オブジェクトを取得することができます。 var defaultImage = UIImage.FromBundle("NotFoundImage"); 関連記事 Xamarin.iOSを…

Xcode 6.1のOrganizerからiTunes Connectにipaファイルをアップロードしようとしたらエラーになる

iOS 8.1が正式にリリースされたタイミングでXcode 6.1へアップデートしました。アップデート後、初めてバイナリ(ipaファイル)をiTunes Connectへアップロードするタイミングで下図のようなエラーが発生しました。 どうしても改善することができなかったので…

Xamarin.iOSでiOSデバイスの機種名(モデル名)を取得する

iOSデバイスも当初と比較するとiPad、iPod、iPhoneとそれぞれの派生モデルが複数登場してきました。搭載されているメモリや画面サイズなどアプリによって適切な表現方法が異なるケースがよくあります。 Objective-Cを使ってモデル名(機種名)を取得する方法は…

Xamarin.iOSでUIImage型のバッファとbyte[]型とを相互に変換する

Xamarin.iOSでUIImage型のバッファとbyte型とを相互に変換してみましょう。 UIImage型とbyte型とでは相互に直接型の変換をおこなうことができません。一度、NSData型に変換した上で希望する型への変換をおこないます。 UIImageとbyteとを相互に変換する UIIm…

Xamarin.iOSでUnwind Segueを使って前の画面に戻る(Storyboard使用時/プログラム編)

iOSで表示された画面はスタック構造で履歴が管理されており、pushViewController:animated:メソッドやpopViewControllerAnimated:メソッドを使用することで、指定した画面へ遷移したり遷移元の画面に戻るということをしていました。 iOS 5でStoryboardが導入…

Xamarin.iOSでNSUserDefaultsにデータを保存する

iOSでアプリケーションの設定値などを永続的に保存するために使われる方法のひとつにNSUserDefaultsがあります。iOSには他にもCoreDataやファイルとして保存することができますがNSUserDefaultsはその中でも最も簡単な方法でしょう。 文字列をNSUserDefaults…

Appbank Network、AdMobのAdvertising SDKをバージョンアップしたときにリンクエラーが発生したのでその対策

iOS 8が正式に公開されて、広告関係のSDKを全てアップデートしました。今までのように上書きアップデートではリンクエラーが発生するようです。 nendSDK for iOS v2.5.4 Appbank NetworkのnendSDK for iOSのv2.5.4では、アニメーションGIF関連の対応が増えて…

千葉工大の休講情報アプリを起動するとクラッシュする不具合を修正しました

CIT休講情報アプリを起動すると、クラッシュする不具合が発生していることに気付きましたので修正しました。 原因としては夏休みに入り休講情報が存在しない状態になったため、サーバーからのレスポンスがnullになってしまい、JSONデータのパースに失敗しア…

ibisPaintを使ってでじこちゃんを描いた

2週間くらい前にぬまさんがTLにでじこちゃんの絵をアップロードしていました。 もうペンタブを処分して久しいので、iPhone用のお絵描きアプリをいくつかインストールして、試し書きをした結果「ibisPaint」というアプリが一番使い勝手がよいのがわかりました…

iPhone用2ch専ブラ「BB2C」でスレッド検索機能を復活させる方法

以前、「iPhone用2ch専ブラ「BB2C」で2ch.scなどの外部板を追加する方法 - 酢ろぐ!」にて、外部板で2ch.scの板を追加する方法を書きました。 最新版では、BB2Cのスレッド検索サーバーが機能しなくなってしまっているようです。 具体的には検索を開始すると…

NSTimerでblocksを処理する を書きました

久しぶりにiOSのネタを書きました。タイマーが満了したあとの処理をdelegate用に別メソッドで用意するほどではなかったのでblocksを使って処理させてみました。 NSTimerでblocksを処理する - iOSアプリ開発の逆引き辞典

千葉工業大学 休講情報 for iPhone をリリースしました

本日、iPhone(iOS 6.1〜)で千葉工業大学(CIT)の休講情報と学食のランチ情報を見るためのアプリをリリースしました。曜日タブを選択するとその曜日の休講情報が閲覧する事ができます。 おまけ機能のひとつですが、千葉工業大学の学食別のランチ情報もみること…

Xcode 5のBotsでプロビジョニングプロファイルでエラーが発生してまうので対策した

Xcode botを使い始めました。 リポジトリによってiOSシミュレータのみで解析をしていたはずなのですが実機ビルドを想定しているかのような謎のエラーが発生してしまいます。エラー野内用としては下記のようなものです。 No matching provisioning profile fo…

東京農業大学 休講情報アプリで休講情報が見れなくなっていた不具合を修正しました

たまたま今日アプリのレビューを見ていたら、今年になってから休講情報が表示されていないという書き込みをしている学生の方がいるのに気付きました。 調べてみたところ、どうやら今年度から休講情報のフォーマットが少し変わったようで、休講情報の取得に失…

文字列を表示するサイズを求めるsizeWithFont:メソッドがiOS 7から非推奨になっているのでワーニングが出ないように置き換える方法 を書きました

文字列を表示するサイズを求めるsizeWithFont:メソッドがiOS 7から非推奨になっているのでワーニングが出ないように置き換える方法を「iOSアプリ開発の逆引き辞典」に書きました。 文字列を表示するサイズを求めるsizeWithFont:メソッドがiOS 7から非推奨に…

iPhone用2ch専ブラ「BB2C」で2ch.scなどの外部板を追加する方法

なんだか2ch周辺が大変なことになっていますがどうなんでしょうか。日本史周りネットにあまり載っていない情報が集約されているイメージなので、ユーザーを分散させない形でまとまると良いなと思っています。 それはそうと、BB2Cで「2ch.netのとある板が見れ…

MS信者というかガジェット好きだった自分がiPhoneの画面においているもののメモ

嫁と一緒に使っているのでiMessageが使えるiPhoneが都合が良いのですよね。結婚する前からiPhone 3GSをずっと使ってましたし。 なにかブログでシリーズ化しているみたいですよ。 MS信者?と思われてるであろう自分がiPhoneの最初の画面においてるもののメモ …

UITableViewのセクションインデックスの見た目をカスタマイズする方法 を書きました

UITableViewのセクションインデックスの見た目をカスタマイズする方法を「iOSアプリ開発の逆引き辞典」に書きました。 UITableViewのセクションインデックスの見た目をカスタマイズする - iOSアプリ開発の逆引き辞典 iOS 7でセクションインデックスを表示す…

iOSでカテゴリにプロパティを生やす

カテゴリにこんなプロパティを生やしたい。 @interface UIImageView () @property (strong,nonatomic) NSArray *currentAnimationImages; @end 実装側では下記のように実装する。objc_getAssociatedObjectの第2引数はキーです。 キーは中身の内容ではなくて…

「Windows Store App Logo Maker」でiOSやAndroidのスマートフォン向けのアイコンが作れるようになったぞ!

各プラットフォーム向けに同じアイコンを何回リサイズしないといけないんだ。アイコンを作るの面倒くさいと常々考えていました。 大きな画像からWP,Win8,iOS,Android用のアプリアイコンを生成するツール欲しい2014-02-20 15:14:50 via OS X これを高橋さんが…

iOSで同じサイズのUIImageを2つ重ね合成して新しいUIImageを作る

UIImage *srcImage = [UIImage imageNamed:@"test_image"]; UIImage *dstImage = nil; UIImage *overlayImage = [UIImage imageNamed:@"overlay_image"]; CGSize size = srcImage.size; UIGraphicsBeginImageContextWithOptions(size, 0.0f, [[UIScreen main…

iOSでマスク画像を使ってマスク処理した新しいUIImageを作る

UIImage *srcImage = [UIImage imageNamed:@"test_image"]; UIImage *dstImage = nil; UIImage *maskImage = [UIImage imageNamed:@"mask_image"]; CGImageRef m = maskImage.CGImage; CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(m), CGImageGetH…

iOSで1色だけの空のUIImageを新しく作る

// 1色だけの空のUIImageを作る - (UIImage *)imageWithColor:(UIColor *)color rect:(CGRect)rect { UIImage *image = nil; // ビットマップ形式のグラフィックスコンテキストの生成 UIGraphicsBeginImageContext(rect.size); // 現在のグラフィックスコン…

iOSで任意の領域をクリッピング(トリミング)して新しいUIImageを作る

UIImage *srcImage = [UIImage imageNamed:@"test_image"]; UIImage *dstImage = nil; CGRect clipRect = CGRectMake(0, 0, 320, 400); // 指定された画像から指定された範囲の抜き出す CGImageRef cliped = CGImageCreateWithImageInRect(srcImage.CGImage,…

iOSで画像の透明な部分を無視するUIButtonを作る

本記事は「画像の透明な部分を無視するUIButtonを作る - iOSアプリ開発の逆引き辞典」に転記しました。 2月からかなり久しぶりにiPhoneアプリを作るお仕事をしています。 月曜日にデザインをデザイン仕様書をもらいました。どんなアプリかというと、日本地図…

明日から爆弾低気圧が日本を襲うようですが、iOSで❄と☃の間に❄︎を入れると❄︎が消えてしまう現象をみつけました

iPhone*1でTwitterをやっているときにたまたま見つけました。明日から爆弾低気圧が日本を襲うようなのでゆきで変換できる絵文字を並べた結果、文字が消えることを発見しました。 ??と?で??を囲むと、??が表示されない。2014-02-07 22:36:36 via Tweetbot for…

iOSでナビゲーションバーやタブバーの色をまとめてカスタマイズする

あとで追加する。 ナビゲーションバー(UINavigationBar) ナビゲーションバーそのものの色を変更する // ナビゲーションバーのバーの色を変更 [UINavigationBar appearance].barTintColor = [UIColor colorWithRed:157.0/255 green:157.0/255 blue:157.0/255 …

「アプリ内課金+広告 iPhoneプログラミング」が発売されます!

秀和システムさまより「アプリ内課金+広告 iPhoneプログラミング」が発売されることとなりました。大場知悟(id:tworks)さんとの共著です。 本書は、iOSアプリのゲームやアプリで使われているアプリ内課金や広告の実装するための手引書です。iPhoneプログラミ…

Google AdMobの広告枠を作成してみよう

Google AdMobのアカウントの作り方については、「Google AdMobのアカウントを作る」をご覧ください。 作成した広告枠を使って、iOSアプリに広告を表示する場合はiOSアプリでのGoogle AdMobのバナー型広告を実装するをご覧ください。 アプリケーションの登録…

iOSアプリ向けの広告の種類

本記事ではiOSアプリ向けの広告のうち広く使われているものを紹介します。 広告の種類 バナー型広告 アプリ内広告といえばバナー型広告です。アプリやゲーム問わずもっとも使われている広告です。 Studio Zebraさんの「2chまとめサイトビューア」では、画面…

iOSアプリでGoogle AdMobのバナー広告を実装して表示させようとするとクラッシュする問題に対応した

AdMob SDK v6.2.xの時にも発生していたような気もしますが、Xcode 5(iOS 7 SDK)とAdMob SDK v6.4.1の組み合わせでバナー広告を表示させようとしたところ、実行時に以下のようなエラーメッセージが出力されると共にアプリケーションがクラッシュしてしまいま…