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

suer のブログ

メモメモ. はてダ → http://d.hatena.ne.jp/suer/

Archive するたびに Splunk Mint (旧 Bugsense) に自動で dSYM ファイルをアップロードする

ios

追記: この記事は古い情報です。現在この記事の方法ではアップロードできません。

最新の SplunkMint-iOS をインストールし、以下の記事に従って設定してください。(ただし、アーカイブ時ではなくビルド時にアプロードされます)

Configure your project for symbolication

API キーとトークンの取得

API キーとトークンは Splunk Mint のサイトにログインして、それぞれ以下のページから取得する。

  • API キー
    • プロジェクトの Settings > General
  • API トークン
    • Account > Account Info > My Info
Xcode プロジェクトの設定

Xcodeスキーマ(Xcode 上バーのデバッグ停止ボタンの右) をクリックして Edit Scheme... を選択する。

f:id:suer:20150609144908p:plain

Archive の Post-actions を開き、+ をクリックして New Run Script Action を選択する。

f:id:suer:20150609145221p:plain

Shell は /bin/shスクリプトは以下のとおり

API_KEY="API キー"
API_TOKEN="API トークン"
APP_NAME=アプリ名
rm -f $APP_NAME.app.dSYM.zip
zip -r $APP_NAME.app.dSYM.zip "${ARCHIVE_DSYMS_PATH}/$APP_NAME.app.dSYM"
curl -F file=@"$APP_NAME.app.dSYM.zip" --header "X-Splunk-Mint-apikey: $API_KEY"  --header "X-Splunk-Mint-Auth-Token: $API_TOKEN" "https://symbolicator.splkmobile.com/upload/dsym" -i
API キーやトークンを Git の管理対象に入れたく無い場合

プロジェクトルートディレクトリに mint.plist というファイルを置いて、.gitignore で管理対象にならないようにする。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>API_KEY</key>
<string>API キー</string>
<key>API_TOKEN</key>
<string>API トークン</string>
</dict>
</plist>

以下のようなスクリプトを登録する

APP_NAME="アプリ名"
API_KEY=$(/usr/libexec/PlistBuddy -c "Print API_KEY" $(dirname ${WORKSPACE_PATH})/mint.plist)
API_TOKEN=$(/usr/libexec/PlistBuddy -c "Print API_TOKEN" $(dirname ${WORKSPACE_PATH})/mint.plist)

rm -f $APP_NAME.app.dSYM.zip
zip -r $APP_NAME.app.dSYM.zip "${ARCHIVE_DSYMS_PATH}/$APP_NAME.app.dSYM"
curl -F file=@"$APP_NAME.app.dSYM.zip" --header "X-Splunk-Mint-apikey: ${API_KEY}"  --header "X-Splunk-Mint-Auth-Token: ${API_TOKEN}  "https://symbolicator.splkmobile.com/upload/dsym" -i

ステータスバーの文字色を白くする

ios

環境: iOS SDK 8.1

ナビゲーションバーの背景色を変更すると、デフォルトではステータスバーの時刻とかバッテリー残量表示の文字が見づらくなる。

背景色にあった文字色に変更する。

手順

info.plist に以下の行を追加

  • View controller-based status bar appearance
  • Boolean
  • NO

コードでステータスバーのスタイルを変更。

// Appdelegate.swift
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.BlackOpaque

Swift でクラス名の取得

ios

環境: Swift version 1.1 (swift-600.0.56.1)

NSStringFromClass を使用すると、 "プロジェクト名.クラス名" という文字列が取得できる。

class TestClass {}

NSStringFromClass(TestClass().dynamicType)
NSStringFromClass(TestClass)

UITableView をスクロールさせない

ios

環境: iOS SDK 8.1

tableView.scrollEnabled = false

MagicalRecord でシミュレータ実行時に作成された sqlite のデータベースファイルを探す

ios

環境: iOS SDK8.1

MagicalRecord で

MagicalRecord.setupCoreDataStackWithAutoMigratingSqliteStoreNamed("database.sqlite")

のように実行した場合、シミュレータでは

~/Library/Developer/CoreSimulator/Devices/デバイスID

以下に作成される。

デバイス ID が分からないことが多いので find で探す。

$ find ~/Library/Developer/CoreSimulator/Devices/ -name "database.sqlite"

UITextField のテキストが変更される時のイベント

ios

環境: iOS SDK 8.1

textField.addTarget(self, 
                action: Selector("textChanged:"),
                forControlEvents: .EditingChanged)
func textChanged(textField: UITextField) {
    println(textField.text)
}

iOS で下バーでタブみたいなやつ

ios

環境: iOS SDK 8.1

こういうやつ

f:id:suer:20150102213858p:plain

UITabBarController を使う。

let controller1 = UIViewController(nibName: nil, bundle: nil)
controller1.tabBarItem = UITabBarItem(tabBarSystemItem: .Favorites, tag: 1)
let controller2 = UIViewController(nibName: nil, bundle: nil)
controller2.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.Contacts, tag: 2)
let controller3 = UIViewController(nibName: nil, bundle: nil)
controller3.tabBarItem = UITabBarItem(tabBarSystemItem: UITabBarSystemItem.More, tag: 3)

let tabBarController = UITabBarController(nibName: nil, bundle: nil)
tabBarController.setViewControllers([controller1, controller2, controller3], animated: false)