iOS

How to deal with out of memory problem while create thumbnail by PDFKit

iOS

Summary PDFKit has a method thumbnailOfSize: for create thumbnail but when you create thumbnail of all page by this method, memory consumption is increasing and it's cause of app crash. Solution You have to release PDFDocument instance tha…

Add any files in your iOS application bundle and use it in the app.

iOS

Outline You can add any files in your iOS application at build phase and use it in the app. Add files Add any files to your Xcode project. The following example add text file sample.txt. When you add files to the Xcode project, Xcode add t…

iOS版PDFKitでメモリ消費を押さえながらサムネイルを生成する

iOS

概要 iOS版PDFKitではPDFPageクラスにサムネイル生成用のメソッドthumbnailOfSize:が用意されている。このメソッドを使用して全ページのサムネイル画像を生成していくと、PDFによってはメモリ消費量がどんどん増加していき、アプリがクラッシュする。 解決策…

iOSアプリ内に埋め込んだファイルをプログラムから利用する

iOS

概要 アプリ内に任意のファイルを埋め込んでおき、プログラムからそのファイルにアクセスして利用する。 ファイルの追加 Xcodeプロジェクト内にファイルを追加する。以下ではテキストファイルsample.txtを追加している。 ファイルを追加すると、自動的にプロ…

How to detect Chrome on iOS by JavaScript when "Request Desktop Site" setting is enabled.

Problem When the setting of "Request Desktop Site" of Chrome on iPhone is enabled, navigator value is changed that not include text CriOS. So you cannot detect browser is Chrome by JavaScript. *This problem and solution is checked on Chrom…

iOS版Chromeで「PC版サイトを見る」を有効にしている場合にJavaScriptでChromeであることを検知する

問題 iPhone版Chromeでは設定で「PC版サイトを見る」を有効にした場合、navigatorで取得できる情報が変化し、CriOSが含まれなくなるのでChromeであることが分からなくなる。 *Chrome 80.0.3987.95で確認。 iPhoneで取得可能なユーザーエージェント iPhone版C…

ビルドエラー: "WKWebView before iOS 11.0 (NSCoding support was broken in previous versions)"

iOS

エラー内容 xibファイルやstoryboardでビューにWKWebViewを配置してビルドすると、以下のエラーが発生する場合がある。 WKWebView before iOS 11.0 (NSCoding support was broken in previous versions) これはXcodeのバグに起因するエラー。Xcode10以下のWK…

XCodeのコンソールに大量の"[Process] kill() returned unexpected error 1"が出力される

iOS 13.2以上で発生。 アプリ上でWKWebViewを使用するとコンソールに大量の"[Process] kill() returned unexpected error 1"が出力される。特にアプリに影響はないので無視して良い。 以下のバグが原因。既に修正されているが、iOS 13.3でもまだiOSには取り…

Objective-C 非同期処理テンプレート

Objective-Cでよく使用する非同期処理のコードテンプレート。 メインスレッドで非同期処理を実行する dispatch_async(dispatch_get_main_queue(), ^{ // メインスレッドで実行する処理 }); バックグラウンドのスレッドで非同期処理を実行する dispatch_async…

PDFKitでPDFの綴じ方向、見開き時の表紙設定を取得してセットする

PDFKitでPDFの以下の設定を取得し、セットする。 PDFの綴じ方向(右、左) PDFの単ページ、見開き設定および見開き時の表紙設定 どちらもPDFKitでは直接はサポートしていないので、CGPDFDocumentRefから設定を取得して自分でセットする必要がある。 PDFの綴じ…

CodaDataで"NSMergeConflict for NSManagedObject"エラーが発生する

CoreDataのNSManagedObjectContextインスタンスのsave:を実行した時にNSErrorが以下のエラーを返す。 NSError: code=133020, domain=NSCocoaErrorDomain, userInfo= { conflictList= ( NSMergeConflict (0x28164b080) for NSManagedObject (0x282e0ba70) wit…

XCodeでサポートされていないバージョンのiOSを使用しているデバイスにアプリをインストール&デバッグする

XCode 10ではiOS 13がインストールされているiOSデバイスに対してアプリをインストールしたりデバッグをすることはできない。XCode 11にバージョンをあげられない場合は、以下でXCode 10でもiOS 13のデバイスを扱うことができるようになる。 DeviceSupportフ…

How to identify user is iOS when 'Request Desktop Website' of Safari is enabled on iOS13.

iOS

Safari on iOS13 has a setting "Request Desktop Website" that changes value of 'userAgent' same with macOS 10.15. *The default value of this setting is on on iPadOS and off on iOS. The 'navigator' object properties when 'Request Desktop Web…

iOS13で「デスクトップ用Webサイトを表示」がOnになっている場合にUserAgentでマイナーバージョンを識別する

iOS

「デスクトップ用Webサイトを表示」がOnになっている場合、iOS13ではどのマイナーバージョンでもUserAgentには"Intel Mac OS X 10_15"としか記載されていないため、マイナーバージョンを判別できない。 iOS 13.2で「デスクトップ用Webサイトを表示」をOnにし…

iOS13のSafariで「デスクトップ用Webサイトを表示」がOnになっている場合にUserAgentでiOSかどうか識別する

iOS

iOS13ではSafariの設定「デスクトップ用Webサイトを表示」がOnになっている場合、UserAgentがmacOS10.15と同じ値に変化する。 *この設定はiOSではデフォルトでOff、iPadOSではデフォルトでOnになっている。 「デスクトップ用Webサイトを表示」がOffの場合のU…