iPhoneアプリ開発

【cordova】iOSのサイレントプッシュ通知について

cordovaでiosのサイレント通知を試したときの挙動についてメモしておく。試した環境 ・ios11 ・awsのsnsでサイレント通知送信結果 通知設定アプリ状態受信 onバックグラウンド可 フォアグラウンド可 停止中不可 offバックグラウンド可 フォアグラウンド可 停…

【swift】uitextviewで文字数を制限したテキストコピーを実装

はじめに uitextviewにコンテンツを表示。コンテンツの内容はコピー可能だけど全文を一括ではコピーできないようにしたい ということでした実装手順としては ・uitextviewのUIMenuControllerを無効にしてコピーできなくする ・文字数制限してコピー可能なUIM…

【swift】uitextviewの選択範囲の文字列を取得する方法

今回やりたかったことはタイトルのとおりですが、 uitextviewに表示しているテキスト中でユーザーが選択状態としている部分の文字列を取得するということでしたswift let location = textView.selectedRange.location let length = textView.selectedRange.l…

【swift】RealmSwiftとObjectMapperでローカルDBを使う方法メモ

はじめに 今回作りたかったものは辞書アプリみたいなイメージで 書籍のカテゴリーが一覧表示されていて選択すると紐づく書籍がリスト表示されるだけやりたかったことは以下 ・辞書データはサーバーに保存 ・できるだけオフラインでも使えるようにしたいで、…

【swift】エラーメモ clang: error: linker command failed with exit code 1 (use -v to see invocation)

ついさっきまで同じビルドできていたのに突然このエラーが出る場合があります。 特に開発始めたばかりのときはビルドが通らないだけで一苦労です自分の場合は、「command + shift + k」で1度クリーンしてから再度ビルドすると大抵解決していると思います cla…

【swift】fabricのcrashlyticsでクラッシュレポートが送信されなかった時の対応メモ

はじめに サンプルアプリを作って、マニュアルの手順通りに導入すると上手くいくのに携わっていた案件のアプリに入れた際になぜか上手くいかなかった。 そのときの対応方法をメモ 実装 AppDelegate.swift import Fabric import TwitterKit import Crashlytic…

【ios】アプリ開発〜リリースまでのまとめ

はじめに アプリ開発してお客さんに確認していただいて、アップルに審査してもらうまでにやっとたどり着いたので備忘録としてメモイメージとしてはこんな感じで、webアプリとか受託開発するとよくある形だと思われます 環境 アプリを確認する人 開発 開発者 …

【ios】Universal Linksを実装する - 実装方法

はじめに 前回書いた概要の続きです。手順としては以下 Apple Developer ・「Identifiers」の「App IDs」より「Associated Domains」がEnabledになっていることを確認(または設定) その際に、アプリの「ID」と「Prefix」もあとで使うのでメモしておく※ここ…

【ios】Universal Linksを実装する - 概要とか

はじめに 今回やりたかったことは、あるurlへアクセスした際に ・未インストールならAppStoreへ誘導 ・インストール済であればアプリを起動(起動時の画面も指定したい)ios8以下では、ココとかの記事の通り、 アプリにカスタムurlスキームを設定して、html…

【swift】カスタムUIView上のボタンが押せなくてハマったときのメモ

はじめに 久々にこんなにハマりました、、、 共通で使い回すために作るカスタムUIVIew上のボタンを押してもウンともスンともいわなかったことでしたコードは以下のような感じで、なんてことはなくボタンを持ってるだけのUIViewをaddSubViewして、見た目的に…

【swift】api通信処理を共通化/エラー処理もちゃんとやる

はじめに 以前、こちらで同じようなことを書いたのですが。 そのときはまだswiftやりたてというのとエラー処理とかちゃんと考慮できてなかったので今回もう1度ちゃんとまとめてみようと思いました実装したい機能としては以下 >サーバーからのレスポンス arr…

【swift】AppDelegateのopenURLが呼ばれなかったときの対応メモ

はじめに 「example://」のような形でアプリを起動したときにAppDelegateのopenURLメソッドが呼ばれませんでした。 ちなみに、アプリを起動した状態でブラウザから起動すると期待通り呼ばれました。原因としては、AppDelegateのdidFinishLaunchingWithOption…

【swift】AFNetworkingでタイムアウト処理メモ

やりたかったこと AFNetworkingを使っていて、タイムアウトまでの時間を計ってみるとちょうど1分間でした。 1分間待つのはちょっと長いかなと思って、この時間を設定する方法を調べてみましたAFNetworkingの中をtimeoutでgrepしてみると、requestSerializer…

【swift】シュミレータービルドの方法メモ

はじめに Facebookアプリに申請を出す際にアプリの提出が必要だとのこと。 が、現時点でアプリはリリース前でアプリを実機で動作確認する際にはUDIDをプロビジョンファイルに含めて、デプロイゲートよりインストールしてもらう形で進めてきました。で、これ…

【swift】UIBarButtonItemを右寄せする方法メモ

はじめに 今回やりたかったのは、こんな感じ。 UIDatePickerの上にUIToolbarをおいて、UIToolbarの中にUIBarButtonItem(決定ボタン)をおいて右寄せにする 実装 UIBarButtonItemのbarButtonSystemItemをUIBarButtonSystemItem.FlexibleSpaceに設定して これ…

【swift】UITableViewをタップされたらキーボードを隠す(けど画面遷移はしない)方法メモ

はじめに タイトルがわかりずらいんですけど、やりたかったこととしては以下画面としては、UISearchBarがあってUITableViewがあって、UISearchBarを編集中に画面をタップしたらキーボードを閉じる。 けど、素直に実装するとUITableViewのセルがタップされた…

【swift】ios9でUITableViewCellの罫線を左端まで引っ張る方法メモ

はじめに UITableViewのデフォルトだと、セル間の罫線が画面左から少し離れたところからスタートしているんですね。 今回やりたかったことはこれを画面の左端からスタートさせることです 実装 で、検索するとこの辺に答えっぽいのがあったのですが、自分のア…

【swift】UITabBarControllerにスライドメニューを追加する方法

はじめに スライドメニューで検索すると色々出てきたのですが、今回は SlideMenuControllerSwiftというライブラリを使わせていただきました。紹介されている使い方をそのままでした。 Podfileに以下を追加して、podinstallするとインストール完了ですPodfile…

【swift】配列を結合する方法メモ

はじめに 今回やりたかったのは以下のようなこと // 2つの配列 var array = ["test1", "test2"] var array2 = ["test3", "test4"] // 1つの配列に結合したい var array3 = ["test1", "test2", "test3", "test4"] 実装方法 // 2つの配列 let array = ["test1"…

【swift】ViewControllerのdeinitが呼ばれなかったときの対応メモ

はじめに pcにiPhoneをつないでxcodeでcpuやらメモリの使用量やらをリアルタイムに見ることができるのでそれをしました。 画面をひらくたびにメモリ使用量が増えるはわかるんですけど、UiNavigationControllerの戻るとかやってもメモリが減らなくておかしい…

【swift】TTTAttributedLabelでSizetoFitとSizeThatFitsが効かなかったときの対応メモ

はじめに 今回やりたかったのは、 TTTAttributedLabelで生成したラベルにnumberoflinesを設定して高さ可変の対応したときにハマったのでメモしておきます。 解決方法 通常のUILabelだと、以下のコードみたいなかんじでいけたのですが今回はいけませんでした …

【swift】ネットワーク通信状況でのエラー処理を実装する方法メモ

はじめに アプリの場合、インターネットとつながっていない場合の処理を考慮する必要があります。 僕の場合、ある程度アプリを作ってからこのことを考え始めましたが、本来であれば最初から頭にいれて開発を進めるべきだったんですね。で、どうするのがいい…

【swift2】urlを正規表現で解析する方法

はじめに 今回やりたかったのは、カスタムurlスキーマから起動されたときに指定されたurlによって特定の画面を開くとということ。 カスタムurlスキーマについてはあとでまとめます。今回はurlを正規表現で解析する部分をメモします url解析用の関数 たぶん、…

【swift】吹き出しでLINEぽいメッセージアプリのUIを作ったのでメモ

はじめに 今回やりたかったのはこんなかんじの画面です。iosで吹き出しのライブラリとか実装方法とか検索するとちょいちょい出てくるのですが、ちょっと難しかったりで結局自分で実装することにしました。最初は吹き出しの画像を用意してそれを背景にしたUIL…

【swift】UIRefreshControlが動かなくてハマったことメモ

はじめに 今回もまさに超初心者のハマり方をした。 やりたかったのはUITableViewでリスト表示してあるデータを1番上を引っ張ったら最新の情報に更新するっていう 1番最初にみんなやりそうなやつです。Pull To Refreshとかいうのかな 実装方法 けっこういろん…

【swift】UISearchBarのアイコン(虫眼鏡の)を非表示(というか削除)にする方法メモ

やりたかったことはタイトルのとおりなのですが、地味に時間かかりました // UISearchBarを生成 var searchBar: UISearchBar = UISearchBar() for subview in searchBar.subviews { for subview2 in subview.subviews { if var _subview2 = subview2 as? UIT…

【swift】初案件でつかったライブラリまとめ by sns系アプリ

はじめに はじめてアプリ案件を経験していろいろありましたが、実際につかわせていただいたライブラリをメモしておきます。 経験者の方からしたら使いすぎだろっていわれそうですが、、、僕みたいな素人でもつかえたのでおなじような初心者のかたでもつかえ…

【swift】ios7対応でしたことをメモ

はじめに ios8のことしか考えずに開発を進めて、ios7もまだまだ利用者がいるので当然対応してあるはずですよね? ということで即席で対応中です。まだ途中なんですけど、とりあえずこれをやったら形になったということをまとめておきます ・UINavigationBar…

【swift】無限スクロールするUItableViewを実装する方法メモ

はじめに 今回やりたかったのは、またありがちなこんな感じの画面です。 といってもやりたかったのは、こちらで書いた内容をコードレベルにしたもので。 【swift】uitableviewが重いときに対処すべき2つのこと - とりあえずphpとかUITableViewを使うときにパ…

【swift】uitableviewが重いときに対処すべき2つのこと

はじめに 今回やりたかったのは、twitterのタイムラインみたいな無限スクロールを軽くしたいということ。今までも重いのは知ってたんだけど放置してきましたが、いよいよ開発も終盤にさしかかってきてパフォーマンスやら細かい部分も修正しないとならなくな…