はじめに 今回はiOS13で新たに追加された BackgroundTasks Framework について見ていきたいと思います。 基本的には、 WWDC2019動画の『Advances in App Background Execution』を見ながら実践してみました。 ですが、微妙に躓くところもあったのでメモとして残しておきたいと思います。 BackgroundTasksとは まず、 BackgroundTasks の説明です。 BackgroundTasks はiOS13から利用できる新しいFrameworkになります。 BackgroundTasks には大きく分けて下記2つのAPIが存在します。 Background Processing Tasks Background App Refresh Tasks Background Processing Tasks Backgrou
iOSアプリケーション開発 この章は、iOSアプリケーション開発にBluetooth LEを提供するCore Bluetoothフレームワークを解説します。 Core Bluetoothフレームワークは、iOSアプリケーションにBluetoot LEデバイスの発見、接続と読み書きの操作を提供します。このフレームワークが、2章で述べたBluetooth LEの通信規格や振る舞いなどの技術詳細を隠蔽して抽象化するので、アプリケーション開発者はアプリケーション開発だけに注力できます。 iOS5とiOS6で、Core Bluetothフレームワークが対応する機能が大きく異なります。iOS5は、Bluetooth LEのセントラルという役割を提供します。iOS6は、セントラルに加えてペリフェラルという役割も提供します。iOSのバージョンごとの対応を、iOS5およびiOS6のアイコンを節のタイトルに表
※ 実装/動作確認環境: Xcode 11 beta7 + iOS 13 beta 8 TL; DR iOS13 & iOS12で位置情報を「常に許可」してもらう場合、Info.plistの値を以下のようにすることで適切に説明・誘導できそう NSLocationWhenInUseUsageDescription XXXの利用には、「Appの使用中は許可」を選択してください。 NSLocationAlwaysAndWhenInUseUsageDescription XXXの利用には、「常に許可」を選択してください。 背景と概要 iOS13からは CLLocationManager.requestAlwaysAuthorization() を実行しても、「常に許可」をすぐに取得できないようになり、アラートで2度許可を取得する必要がある 詳細はWWDCの発表内容1や解説記事2 3を参照 iOS1
var locationManager = CLLocationManager() locationManager.delegate = self locationManager.requestAlwaysAuthorization() とした際に、 「常に許可」 「使用中のみ許可」 「許可しない」 の3つの選択肢を持つ確認ダイアログが表示されていました。 これがiOS13では、 「使用中のみ許可」 「一時的に許可」 「許可しない」 の3つの選択肢に変更となりました。 一見すると、アプリ開発者にとって辛い仕様に思えるのですが、「常に許可」がなくなったわけではありません。 「常に許可」を求めるタイミングが変更になった というのが正しい解釈となります。 因みに、ここで「使用中のみ許可」を選択した場合、 CLAuthorizationStatus は実は .authorizedAlways にな
突然開けなくなるアシスタントエディター XcodeでiOSアプリの開発をしていて、StoryBoardを開いて、UIButtonのアクションをコードに繋げるためにAssistant Editorを何気なく、特に意識せず、普段通りにXcode上のファイルを「Alt + クリック」で開こうとしたところ、普段は画面が縦に2つに分割されるのに、常時シングルエディター(クリックしたものだけが表示される)になってしまいました。あぁ、いつものバグね(笑)はいはいってことで、Xcodeの再起動、あれっと思ってMacの再起動…、「ショートカットだから、画面で表示されるものをさわればとりあえずは分割できるだろう…」と、右上の「⇄」を押そうにもただXibのXMLが表示されるだけで全く解決せず、焦っていました。 解決方法 以下画像のボタンを押すだけです。ただこれだけに筆者は30分以上悩みました(ガチ) この問題に
Swift5がリリースされましたね。 Swift5にはABIの安定化やResult型のStandard Library追加など様々な追加・変更がありました。 次のURLにまとまった神Playgroundがあるので、みたことない人はおさらいしましょう。 https://github.com/twostraws/whats-new-in-swift-5-0 String Interpolationを使ってNSAttributedStringをラップする この中でString Interpolationという機能があります。 String Interpolationの使い方は上記Playgroundを参照してください。 このString Interpolationを使うとめちゃめちゃNSAttributedStringが便利になります。 下記にNSAttributedStringをラップしたもの
Env OS X ElCapitan 10.11.6 使用するツール defaultsとかplutilとかPlistBuddyなど、用意されているツールにもplistをいじれるものは複数あるが、それぞれの使用する用途は以下のような感じ(だと思っている) defaults: 各設定ファイル(Library/Preferences/*.plist)を作成・編集する plutil: plistの文法チェック・xml,jsonへのコンバート・閲覧(編集も一応出来るけど、arrayやdictの中の値の編集ができない?) PlistBuddy: plistの作成・編集・閲覧 ちなみにどっかの記事でPlistBuddyはElCapitanから使用できない、と記載されてあったが、特に問題なく使用出来るみたい
UIFileSharingEnabled、実機内のアプリで生成したファイルを簡単にPCに取り込めて便利です。 が、UIFileSharingEnabledをYESにしたまま申請すると、理由を聞かれて申請が通りません。 ですのでアプリ申請のときだけUIFileSharingEnabledをNOにする必要があるのですが、それを忘れてしまって公開が遅れてしまうことが多々有ります。 そこで今回、DEBUG時のみUIFileSharingEnabledをYESにする方法がわかったのでメモしておきます。 以下のサイトを参考にさせてもらいました。 ios - UIFileSharingEnabled on debug variant only - Stack Overflow How to Add a Run Script Build phase 作業はとても簡単で、Run Scriptにコードを書くだ
iOS App ├── Documents ├── Library │ ├── Caches │ └── Preferences └── tmp また、保存するファイルによってどこに保存をするかをガイドラインに従ってわけなければリリース申請でリジェクトされてしまう iOS Data Storage Guidelines - Apple Developer 以下リンク引用 ファイルシステムプログラミングガイド (TP40010672 0.0.0) Documents ユーザが作成したデータを保存するために使います。ファイル共有の機能により、ユーザはこのディレクトリ以下にアクセスできます。したがって、ユーザに見せても構わないファイルのみおいてください。 このディレクトリはiTunesによってバックアップされます。 Library これは、ユーザのデータファイル以外のファイル用の最上位デ
※Application_HomeはApplication Rootのこと ※tmpはシステムからのアクセスで消去されるらしいですが, タイミングがわからないので, ファイルを使用しなくなったら 自分で削除しましょう。 ではファイルはどこにおく? 通常のユーザデータ, よく利用するデータなどは, Documentsで, データのキャッシュは, /Library/Cacheで, 一時的に必要なデータは, tmpにいれます。 iCloud関連は別で… Simulatorで確認する Simulatorにおけるデータは, ~/Library/Application Support/iPhone Simulator//Applications/ に存在します。Finderでも確認できます。Libraryなんてないよという方は, で表示方法を書いておきました。 とあるアプリケーションのディレクトリを見
冒頭・ユーザは高品質で安定したアプリを求めている。 ・再現が難しいバグは修正が難しい。 ・ログは再現できないバグを修正するのに役立つ。 例として、稀にしか発生しない読み込みエラーなど。 新しいロギングAPIXcode 12 では統一された新しいロギング API が追加された。OSによってアーカイブされ後で端末から取得できる。パフォーマンスも良い。 サブシステムとカテゴリを指定して Logger を生成し、そのインスタンスのメソッドを呼び出して利用する。 文字列補間は print 関数と似ているが、コンパイル時にはログに最適化された型に変換され、実際にメソッドが呼び出されたタイミングで文字列に変換される。そのため実行コストが低い。 標準で多くの型に対応している。独自の型をサポートするには、CustomStringConvertible に準拠するだけでよい。 非数値型のデータはデフォルトでは
この記事は ドワンゴ Advent Calendar 2019 の 5 日目の記事でしたが、遅刻しました 去年の今頃はサーバサイドエンジニアとして GraphQL サーバおよびクライアントの設計・開発等 に携わっていましたが、今年の6月から iOS エンジニアとして働きはじめました。雑多な技術系のメモは普段は scrapbox に載せています。 今秋、チームのメンバー数名と iOSDC Japan 2019 に参加し、Swiftにおけるインポートとリンクの仕組みを探る を拝聴したことで今までふんわりしていたライブラリやインポート周りへの知識を深める機運が生まれたため、今回は周辺知識を改めて整理しつつ、最終的には得た知識で持って、Xcode を利用せずに手作業でライブラリの作成とビルド, 実行までを試してみよう!という記事を書いていきます。 モジュールやインポート、ライブラリについて理解しつ
この記事は 慶應義塾大学SFC村井&徳田研 Advent Calendar 2015 の15日目の記事です。 Swiftはソースコード公開と共にLinuxへ正式対応しました。 しかし、Mac OS XでSwiftを書くときの定番IDEであるXcodeは提供されていません。 というかそもそも、XcodeはiOSやwatchOSようアプリケーションの開発には便利かもしれませんが、小さなCUIアプリケーションの開発のためにわざわざあの重たいIDEを起動するのは気が引けます。 というわけで、ここではXcodeを使用しないSwiftプログラミングのための各種コマンドの使い方について、REPLやデバッガからライブラリの生成、その他のTipsまでをまとめます。 iOSアプリなどの開発に関わる話は一切出てきません。飽くまでも、C++やJavaのような汎用言語の一員としてSwiftを利用する方法だけを解説し
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く