2019/03/21

iPhone XS Max で Bluetooth 接続性問題が発生し、機体を交換してもらいました

iPhone XS Max を発売日に入手し、快適に利用していたのですが、今年の1月末ごろから、Bluetooth の接続が頻繁に切れるようになってしまいました。

例えば、

- ソニーの完全ワイヤレスイヤホン(WF-SP700N)と接続し、音楽を聴いていると、再生がブツブツと切れてしまう。

という症状が。この時、

- 右手に iPhone を握り、その腕を下におろすと、完全に途切れる
- 右手を曲げて90度位にまで持ち上げると、再生できる

となり、イヤホンと iPhone との距離が症状を引き起こすトリガーになっています。

また、

- 本来 Apple Watch へ届く「通知」が、iPhone へ届く。

という症状も発生しました。

iPhone が Apple Watch と接続できている場合には、各種通知は Apple Watch 側へのみ届く、というのが仕様です。iPhone 側へ届いている、ということは iPhone が Apple Watch を認識できていない、ということになります。

実際、通知が iPhone へ届いた直後に、Apple Watch 側の接続状況を確認すると、iPhone とではなく、無線LANやセルラーとつながっていることが確認できました。無線LANやセルラーとの接続は、Bluetooth に比べて消費電力が大きいため、Apple Watch の電池が1日持たずに枯渇してしまう、という状況もしばしば。

感覚的には、iPhone からの Bluetooth 出力が弱まっている感じです。

iPhone 側で Bluetooth のオン/オフ、機器の再ペアリング、本体の電源オン/オフ、betaを含むOSアップデート、と一通りのことは試したのですが、症状が改善する気配がありません。他の iPhone とイヤホンの接続実験を行ったところ、全く途切れることなく音楽再生ができています。

環境やイヤホンの問題、というよりも、私の iPhone のハードウェア問題だろうと、Apple Store の Genius Bar へ。

担当の方へ一通り状況を説明し、ハードウェア診断を行って頂いたところ生憎 Bluetooth へ異常はない、とのこと。

念の為、店頭備品の AirPod で症状を検証してみましょう、と、AirPod を持ってきて頂き、ペアリングをしようと私の iPhone へ近づけてみたのですが、接続画面が全く表示されません。少し離れたところに置いてある、店員さんの iPad へは何度も接続画面が表示されるのですが、私の iPhone へは一度も表示されませんでした。

結果、「あぁ、これはダメですね」ということで、その場で即座に機体交換となりました。無事に不具合が再現してくれて良かったです。所要時間30分くらいでした。

もし、iPhone XS Max で Bluetooth の接続性に問題を抱えている場合には、一度、 Apple Store で診てもらうと、事態が改善するかもしれません。

ちなみに、iOS 12.1.2 が 2018年12月17日に公開されましたが、このバージョンは、一部で Bluetooth の接続問題が話題になりました。私はこのバージョンをスキップし、2019年1月22日に公開された iOS 12.1.3 を入れたのですが、このあたりから Bluetooth の問題が生じ始めた気がします。もしかすると特定個体の Bluetooth と iOS バージョンの相性問題があるのかもしれませんね。

2018/08/27

Mail.app の「セキュリティ保護されていない認証を許可」チェックボックスを有効にするアプリを作りました

macOS High Sierra(少なくとも 10.13.6 まで)は、Mail.app に小さなバグがあります。

そのバグは、

  1. Mail.app 「環境設定」の
  2. 「アカウントタブ」から
  3. 「IMAPの詳細設定」へ入り
  4. 「セキュリティ保護されていない認証を許可」のチェックボックスを有効にした後
  5. 「OK」を押しても
  6. 「セキュリティ保護されていない認証を許可」の設定が反映されない

というものです。

Mail.app はユーザ名やパスワードなどを変更すると、その設定が正しいかどうかをサーバへ問い合わせて検証を行い、正常な接続を確認できた場合にのみ、設定を保存する仕組みになっています。

そのため、「セキュリティ保護されていない認証を許可」の設定が反映されない場合、SSL の有効になっていないメイルサーバへの設定変更は検証が成功しないため、保存ができない、ということになってしまいます。

多くの IMAP サーバは SSL に対応していると思われるので、このバグで悩む人は少ないとは思いますが、私が私的に使っているIMAP サーバは SSL 非対応のため、非常に困ってしまいました。

そこで Mail.app が使っている ~/Library/Accounts/Accounts4.sqlite を直接操作するアプリ「Accounts4Fixer」を作成しました。v1.0.0 の Release バイナリも作成してあります。

内容は単純で、直接データベースの当該要素を変更してるだけです。Mail.app は CoreData を使ってデータベースアクセスをしているようですが、このアプリでは SQLite ライブラリを使って直接データベースを書き換えています。

アカウントに関するデータベースを変更する都合上、変更が  失敗した場合、最悪 macOS へログインすらできなくなってしまうかもしれません。その点をよく理解頂いた上で、自己責任でご利用ください(事前にバックアップを作成することをお薦めします)。

なお、この Mail.app のバグは、macOS Mojave では直っているようです。例年通りであれば、恐らく一ヶ月程度で Mojave がリリースされると思われるので、もしそれまで待てるのであれば、また、Mojave へアップデートする予定であれば、Mojave リリースを待つのも良い案だと思います。

2018/06/25

復活する「SMTP サーバリスト」を消す方法

この記事は macOS 10.13.5 / メール 11.4(3445.8.2)を使っています。

macOS 付属の Mail.app で何度も復活する「SMTP サーバリスト」の要素を消す方法です。

TL;DR

Keychain Access.app を使って com.apple.account.SMTP.accountsync を消します。

macOS に付属のメールアプリで「環境設定」に入り、「アカウント」を開くと、メール用のアカウントが表示されます。



右側のペインにあるセグメントバーで「サーバ設定」を選択すると「送信用メールアカウント」のプルダウンメニューが表示され、「SMTP サーバリストを編集」からサーバの一覧画面へ移動できます。




本来ならば、消したい要素を選択し「-」ボタンを押すことで、不要な要素を消すことができるのですが、設定画面を抜け、再度設定画面へ戻ってくると、なぜか消した要素が復活してしまうことがあります。

この現象は Keychain.app を開いて該当項目を消すことで修正できます。

危険な操作ですので、十分に用心して行ってください。

1. Keychain Access.app を開きます。
2. メニューバーにある「表示」から「不可視項目を表示」を選択します。
3. Keychain Access.app の右上にある検索ボックスへ「com.apple.account.SMTP.asynchost」と入力します。
4. 「アカウント」に表示されている項目が「SMTP サーバリスト」の「ホスト名」と合致する項目を選択し、delete ボタンを押します。



これでメールアプリからも不要な要素が削除できました。念のために不可視項目を非表示にしておきましょう。

5. メニューバーにある「表示」から「不可視項目を非表示」を選択します。