CrossBridge Lab

技術ネタ、デバイスネタを...

【Swift3】Swift3でプッシュ通知のデバイストークンを文字列にする

 iOSのPUSH通知のDeviceTokenを文字列(NSString / String)に変換するには単純に以下のようにはいきませんでした。

var token: String = NSString(data:deviceToken, encoding:NSUTF8StringEncoding)

 なのでSwift2.3までは以下のように受け取ったDatadescriptionを取得して<>と空白を取り除くというアクロバティックな方法を取っていました。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    var characterSet: NSCharacterSet = NSCharacterSet( charactersInString: "<>" )  
    var token: String = ( deviceToken.description as NSString )
        .stringByTrimmingCharactersInSet( characterSet )
        .stringByReplacingOccurrencesOfString( " ", withString: "" ) as String
        print(token)
}

 が!Swift3で同じように変換しようとすると32 bytesという素敵な文字列になってしまいます。descriptionで帰ってくる文字列が変わったってことですね。そもそも変則的な方法でしたがSwift3では以下の方法でに文字列に変換することができます。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let token = deviceToken.map { String(format: "%.2hhx", $0) }.joined()
    print(token)
}


Xcodeのビルドを並列にして高速化する

ビルド完了時にかかった時間を表示する

ターミナルで以下のコマンドを実行する

defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES

ビルドを並列に実行する

ターミナルで以下のコマンドを実行する。以下は同時実行数を4と指定している。

defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 4




Macbookのバッテリーを交換する

はじめに

 先日Touch BarとTouch IDが搭載された新しいMacbook Proが発表されましたが、まだまだ現役のうちのMacbook Air。これからもがんばってもらいたいところですが数年使っているとバッテリーがヘタってくるものです。

バッテリーの情報を確認する

 システムレポートから充電回数やフル充電時の容量を確認することができます。

f:id:crossbridge-lab:20161104223538p:plain

 ここ数年のMacbookMacbook AirMacbook Proは充放電回数の上限が1000回となっているようです。1000回を超えるとバッテリーが消耗したと認識されます。実際には使用環境や個人の感覚の問題でもっと少ない回数でバッテリーを交換しなければならないタイミングを迎えるかもしれませんね。

バッテリーを交換する

 うちのAirは600回程度なのでまだ大丈夫ですが、外で長時間使うこともあるため早めに交換しようと思いました。Appleでバッテリーを交換して貰う場合は以下の料金がかかります。(2016年11月現在)

Macbook Air / Pro:12,800 円

12 インチ MacBook / 13 インチ/15 インチ MacBook Pro Retina ディスプレイモデル:19,800 円

 少しお高いですね。他の方法としてはiPhoneの修理屋と同じようにMacbookのバッテリー交換をしてくれるお店を探すのもアリです。少しネットで調べてみたところAppleStoreより数千円ですが安いようです。

 もう1つの手段としてはバッテリーを購入して自分で交換するという方法もあります。5000〜7000円程度とお店で交換するより格安ですが、自分で交換すると保証が効かなくなるというデメリットもあるのでそこは自己責任で。バッテリーを交換するためには裏蓋を開ける必要がありますが、その際にはトルクスドライバーを使います。販売されているバッテリーにはトルクスドライバーが付属しているか確認した方が良いでしょう。

AppleStoreでバッテリーを交換する

 AppleStoreでバッテリーを交換する場合はジーニアスバーに持っていきます。Genius Barを利用する際はAppleホームページから日時を指定して予約します。

f:id:crossbridge-lab:20161105095008p:plain

 AppleStoreのアプリを入れていると通知が来ます。

f:id:crossbridge-lab:20161105175647p:plain

 予約していくと長時間待たされることもなく対応してもらえるので楽で良いです。アップルストアに着いたら店員に声をかけて待ちます。呼び出されたらまずはApple Hardware TestでMacの状態を確認してもらいます。まだ充電回数がまだ600回ということで新品時の90%と診断されましたが、これからも数年使うつもりなので交換してもらうという判断に。Appleの人は無理に交換を迫ってきたりしないのでご安心を。

 バッテリー交換の所要時間は数時間から数日かかることもあるようです。今回はバッテリーの在庫があったため2時間弱で対応してもらえました。

 それでは交換済みのバッテリーの情報を確認してみましょう。

f:id:crossbridge-lab:20161105175714p:plain

 完全充電時の容量が交換前に比べて増えています(4477mAh→5349mAh)これでまだまだ現役でがんばってくれそうです。

 余談ですがAppleStore店頭でApplePayで支払いをしました。AppleStoreは以前からiDとQUICPayの支払いに対応してたんですね。クレジットカードでしか支払いをしたことがなかったので知らなかった・・・