iOS開発でのサーバ側 push通知設定や、WebサーバのSSL証明書設定に使われる .pem ファイルの中身を確認する時に便利なコマンドをまとめました。
- pem ファイルとは?
- openssl コマンドのインストール方法
- pem ファイルに含まれる証明書の確認方法
- 秘密鍵の内容を表示する
- pemファイルの作り方
- (おまけ)csrの情報を出力する
続きを読む [OpenSSL] pem ファイルとは?SSL証明書の中身を確認する方法
iOS開発でのサーバ側 push通知設定や、WebサーバのSSL証明書設定に使われる .pem ファイルの中身を確認する時に便利なコマンドをまとめました。
続きを読む [OpenSSL] pem ファイルとは?SSL証明書の中身を確認する方法
iOS開発で頻繁にお世話になる .p12 ファイル(秘密鍵+証明書のセット)の情報を確認する方法です。
SHA1フィンガープリント、有効期限、チームID,名前などがコマンドラインから簡単に確認できます。
証明書と鍵ファイルからp12ファイル(pkcs12)を作る手順のメモ。
証明書(cer)をPEMに変換する、鍵(PEM private key)と結合してp12にする、という2段構え。
参考: http://spiratesta.hatenablog.com/entry/20120215/1329280918
1.公開用証明書をPEM証明書形式に変換する
$ openssl x509 -in distribution_identity.cer -inform DER -out distribution_identity.pem -outform PEM
2.PEM証明書形式をP12証明書形式に変換する
$ openssl pkcs12 -export -inkey mykey.key -in distribution_identity.pem -out distribution_identity.p12
パスワードを聞かれるので、適宜入力する(パスワード空欄だとキーチェーン取り込みできない)
3.P12証明書を開いてキーチェーンに取り込む(取り込み時に上記パスワードを入力する)
MacBook Pro が壊れたので修理して、クリーンインストールし直したんですが、
そのときにとあるプロジェクトのApp Storeのリリース用(Distribution)秘密鍵の移行を忘れて喪失してしまったため、
なんとかサルベージできないか、と試行錯誤するのに使いました。
Circle CIにp12の鍵が上がっていたので、CIを回してSSHで入り、
鍵ファイル(/var/folders/jm/ほげほげ/T/cert.abcdef)をcatして取り出し .key として保存、
Apple Developerサイトの Certificates,IDs & Profiles から証明書ダウンロード、
あとは手順通りの結合で事なきを得ました。バックアップは大事ですね。。
Xcode7(Swift2) でデバッグビルドの時だけデバッグ出力して、プロダクションビルドの時はセキュリティのためデバッグログを削る方法のメモ。
このコードにより、print, debugPrintln, NSLogの出力を制御することができます。
XcodeプロジェクトのBuild Settings → Swift Compiler → Other Swift Flags の Debug に「-DDEBUG」を追加して下さい。
AppDelegate.swift の冒頭に以下のグローバル関数を追加します。
他のファイルのほうがわかりやすければAppDelegate以外でも大丈夫です。
// リリースビルドでprint, debugPrintを無効化 func print(object: Any) { #if DEBUG Swift.print(object, terminator: "") #endif } func debugPrint(object: Any) { #if DEBUG Swift.debugPrint(object, terminator: "") #endif } // リリースビルドでNSLog無効化 func NSLog(message:String){ #if DEBUG Foundation.NSLog(message) #endif } func NSLog(format:String, _ args:CVarArgType...){ #if DEBUG Foundation.NSLog(String(format: format, arguments: args)) #endif }
print, debugPrintは出てきますが、SwiftでNSLogを非表示にする方法がどうしても出てこなかったので記事にしました。
Swift2から廃止されたprintln, debugPrintlnはここに書いていませんが、print, debugPrint と同様の方法で対応可能です。
ググると NSLogを消す方法として、プレフィクスヘッダファイル(.pchファイル)に #define NSLog を方法が出てきますが、こちらはObjective Cにしか効果がないようなので注意。
代替案としては、より細かいログレベル制御が可能なXCGLoggerを使うのも手です。
AppDelegateで
import XCGLogger let log: XCGLogger = { let log = XCGLogger.defaultInstance() #if DEBUG log.setup(.Debug, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil) #else log.setup(.Severe, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil) #endif let dateFormatter = NSDateFormatter() dateFormatter.dateFormat = "MM/dd/yyyy hh:mma" dateFormatter.locale = NSLocale.currentLocale() log.dateFormatter = dateFormatter return log }()
としておくと、
log.debug("Debugレベルのログです") log.info("infoレベルのログです")
のようにログレベルごとのログ出力ができるようになります。
NSSortDescriptorはObjective-Cでも使えるレコードの配列をレコードキーでソートするのに便利な方法ですが、Arrayのsort()メソッドやsorted()メソッドを使うとよりSwiftっぽくクロージャでソートすることができます。
let records = NSMutableArray() let sortDescriptor = NSSortDescriptor(key: "fileSize", ascending: true) records.sortedArrayUsingDescriptors([sortDescriptor]) // レコード投入 let record1 = NSMutableDictionary() record1["filePath"] = "/path/to/file1" record1["fileSize"] = 1000 records.addObject(record1) let record2 = NSMutableDictionary() record2["filePath"] = "/path/to/file2" record2["fileSize"] = 100 records.addObject(record2) let record3 = NSMutableDictionary() record3["filePath"] = "/path/to/file3" record3["fileSize"] = 500 records.addObject(record3) println(records)
Objective-C でなんとなく知っているけど実はよく知らないプロパティ(@property)まわりの
基本的な仕様をまとめました。
Xcode6.1が正式リリースされてSwiftのβがとれたし、「Swift使うからいらないよ」なんて言わないで、iOS開発のお供にどうぞ。
iOS7以降(iOS7.1, iOS8も)、UIButtonにsetTitleすると勝手にボタンがアニメーションをしてしまうようです。
たとえばコードからデフォルト値設定したいだけなのに[UIButton setTitle:]したら、チラッとUIビルダーの設定値が出ちゃってなんだかあれだったので、止める方法をメモしておきます。
iOSやMac OS Xで使用されるplist形式(プロパティリスト)と、
Androidやwebシステムで使いやすいJSONに相互変換したい場合のメモ。
続きを読む plist と json を相互変換する
iOSでは音を再生する時の選択肢として MediaPlayer Farmework と AVFoundation Frameworkの2種類があります。
今回はこれらの組み合わせで多重再生ができないかどうかを調べてみました。
iPhone の Safariは連続する数字が勝手に電話番号のリンクになってしまいます。
電話番号や郵便番号(123-4567)のようなハイフン区切りだけでなく、
小数点(123.4567)のようにドット区切りの数値までも電話番号リンクになります。
これでは困るので対処方法をまとめました。
(iPhone 4, iPhone 4sで動作確認)