iOSの次のキーでPushを調整する方法の詳細
前言
湾区に来て仕事する一つの面白いところは、全く違う工程の文化背景からのプログラマーたちと衝突して交流することができます。言語習慣、教育環境、思考パターン、工程経験に大きな違いがあります。湾岸区に来てから半年が過ぎました。この時間はちょっと深い感じがします。こちらのプログラマは仕事の効率をとても強調しています。挑戦的なプロジェクトに出会う時、前期の設計討論は非常に頻繁に最適なパスを目指して目標に到達します。通常プロジェクトをする時、各プログラマは自分の道具箱と小足がもともと各シーンに対応します。目的は一番少ない時間で一番多くの仕事をすることです。あるいは残業しないためです。
余談はさておき、この文章は皆さんと一つの私の前にAPNをデバッグする方式を共有します。
シーン:テストしてまたPushが取れないことに気づきました。
テストのクラスメートはしばらくごとにiPhoneがPushに届かなくなったことを発見しました。これはよく前の会社で発生したシーンです。(湾区では多くの会社がテストしていないようです。)最後にデバッグした原因はそれぞれ違っていますが、毎回手元の仕事を止められなくなります。WireSharkまたはtcpdumpキャプチャーを実行して、server端の問題を排除して、携帯電話の設定を確認します。定位の良い問題は少なくとも10分以上過ぎました。無駄に10分以上を過ごしました。上記のシーンが何回か発生した後、簡単なツールを書いて対応しました。
問題:効率を上げるにはどうすればいいですか?
私はネットを包むという流れをできるだけ簡略化したいです。まず、AppleサーバからPushを送信していないかどうか調整して、ワンタッチで操作を完了したほうがいいです。脚本で一歩ずつ実現していきます。
第一歩は、iPhoneをテストしてから、自動的にuuidを取得します。
私たちはterminalでsystem profilerコマンドでmacを接続するusbデバイスを取得できます。
usbを介して接続されたiPhone uddデータがよく見えます。目的情報をsedで抽出すればいいです。
二番目のステップは、パッケージをキャプチャするために仮想ネットワークカードを作成します。
上で抽出したデバイスのddをパラメータとしてネットワークカードコマンドを作成するだけです。
同じように、私たちはrvictl命令が実行されるのを待つだけで、tcpdumpを起動すればいいです。第二のステップの出力から仮想インターネットカードのIDがrvi 0であることを知っていますので、私達は下記のように修正を命じます。
私たちはすでにパックプロセスを起動しましたが、私たちの目標はPushのデバッグです。だから私たちはAPNから来たネットバッグに興味があります。これからtcpdumpにカバンを追加するfilterに簡単なパラメータを設定します。
ここでは、iOS APNに関する情報が必要です。APNのデータチャネルの状況を分析すると、iOS 9の前に、Appleはアプリケーションをプッシュするための長いリンクチャネルがあり、ポート番号は5223に固定されています。iOS 9からHTTP 2.0を採用し、総合的な機能を持つHTTP 2.0のロングリンクチャネルを新設しました。この総合チャネルはPushを押すだけではないはずです。バッグをつかむ時に前の5223チャンネルよりカバンの数が多いことが分かります。現状は、Appleは新版のシステムで同時に二つの通路を使っています。だから、APNは時には5223を歩いて、時にはHTTP 2.0を歩いて、策略が不明です。
簡単に分析してから、目標が明確になります。ポートに制限をすればいいです。HTTP 2.0は間違いなくHTTPSを使って、ポートは443を歩くので、私達の最後の命令は下記のように調整します。
私たちは毎回上の長い一連のコマンドをノックすることができません。操作が便利なために、コマンドにaliasを追加して編集します。profile:
今度はクラスメートをテストしてからPushの取れない問題を調整します。USBを挿したら、私はただ必要です。
1はF 2を押してTerminalを起動します。(私のMacシステムはBetterTouch Toolで設定されたショートカットキーです。)
2アプリを入力して車に戻ります
Bingoさん、次はコーヒーを飲むことができます。静かにカバンを見てください。
締め括りをつける
上のスクリプトは、いくつかのツールを組み合わせるだけで、時間と精力を節約する効果があります。開発過程で似たような例がたくさんあります。いつもいくつかのツールや方法が私たちの開発効率を向上させてくれます。
FBは残業しなくてもいいです。私の空き時間が急に多くなりましたので、今年は多くの文章を更新する予定です。文章のポイントは思考の心得を共有することにあります。短編の消化がいいことが主です。このような文章の目的はツールを共有することにあります。
はい、以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持っています。質問があれば、メッセージを残して交流してください。ありがとうございます。
湾区に来て仕事する一つの面白いところは、全く違う工程の文化背景からのプログラマーたちと衝突して交流することができます。言語習慣、教育環境、思考パターン、工程経験に大きな違いがあります。湾岸区に来てから半年が過ぎました。この時間はちょっと深い感じがします。こちらのプログラマは仕事の効率をとても強調しています。挑戦的なプロジェクトに出会う時、前期の設計討論は非常に頻繁に最適なパスを目指して目標に到達します。通常プロジェクトをする時、各プログラマは自分の道具箱と小足がもともと各シーンに対応します。目的は一番少ない時間で一番多くの仕事をすることです。あるいは残業しないためです。
余談はさておき、この文章は皆さんと一つの私の前にAPNをデバッグする方式を共有します。
シーン:テストしてまたPushが取れないことに気づきました。
テストのクラスメートはしばらくごとにiPhoneがPushに届かなくなったことを発見しました。これはよく前の会社で発生したシーンです。(湾区では多くの会社がテストしていないようです。)最後にデバッグした原因はそれぞれ違っていますが、毎回手元の仕事を止められなくなります。WireSharkまたはtcpdumpキャプチャーを実行して、server端の問題を排除して、携帯電話の設定を確認します。定位の良い問題は少なくとも10分以上過ぎました。無駄に10分以上を過ごしました。上記のシーンが何回か発生した後、簡単なツールを書いて対応しました。
問題:効率を上げるにはどうすればいいですか?
私はネットを包むという流れをできるだけ簡略化したいです。まず、AppleサーバからPushを送信していないかどうか調整して、ワンタッチで操作を完了したほうがいいです。脚本で一歩ずつ実現していきます。
第一歩は、iPhoneをテストしてから、自動的にuuidを取得します。
私たちはterminalでsystem profilerコマンドでmacを接続するusbデバイスを取得できます。
system_profiler SPUSBDataType
system_profilerは、現在のシステムのハードウェア構成情報を取得するためのコマンドです。profilerは詳細な使用方法を調べます。上記命令の実行結果は以下の通りです。usbを介して接続されたiPhone uddデータがよく見えます。目的情報をsedで抽出すればいいです。
system_profiler SPUSBDataType | sed -n -E 's/Serial Number: (.+)/\1/1p'
最初のマッチ結果だけを抽出しました。基本的にはUSBを通してiOSデバイスを接続します。二番目のステップは、パッケージをキャプチャするために仮想ネットワークカードを作成します。
上で抽出したデバイスのddをパラメータとしてネットワークカードコマンドを作成するだけです。
system_profiler SPUSBDataType | sed -n -E 's/Serial Number: (.+)/\1/1p' | xargs rvictl -s
上記の命令を実行したら、次のような出力が見られます。
Starting device 198a630825ee39496411dc3e323039f2947fa16f [SUCCEEDED] with interface rvi0
第三ステップ、tcpdump監視仮想ネットワークカードを起動します。同じように、私たちはrvictl命令が実行されるのを待つだけで、tcpdumpを起動すればいいです。第二のステップの出力から仮想インターネットカードのIDがrvi 0であることを知っていますので、私達は下記のように修正を命じます。
system_profiler SPUSBDataType | sed -n -E 's/Serial Number: (.+)/\1/1p' | xargs rvictl -s | sudo tcpdump -i rvi0
最初のsudo tcpdumpの時に管理者のパスワードを入力しなければなりません。正常であれば、次のような出力が見られます。
tcpdump: WARNING: rvi0: That device doesn't support promiscuous mode
(BIOCPROMISC: Operation not supported on socket)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on rvi0, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
ステップ4で、パラメータを調整します。私たちはすでにパックプロセスを起動しましたが、私たちの目標はPushのデバッグです。だから私たちはAPNから来たネットバッグに興味があります。これからtcpdumpにカバンを追加するfilterに簡単なパラメータを設定します。
ここでは、iOS APNに関する情報が必要です。APNのデータチャネルの状況を分析すると、iOS 9の前に、Appleはアプリケーションをプッシュするための長いリンクチャネルがあり、ポート番号は5223に固定されています。iOS 9からHTTP 2.0を採用し、総合的な機能を持つHTTP 2.0のロングリンクチャネルを新設しました。この総合チャネルはPushを押すだけではないはずです。バッグをつかむ時に前の5223チャンネルよりカバンの数が多いことが分かります。現状は、Appleは新版のシステムで同時に二つの通路を使っています。だから、APNは時には5223を歩いて、時にはHTTP 2.0を歩いて、策略が不明です。
簡単に分析してから、目標が明確になります。ポートに制限をすればいいです。HTTP 2.0は間違いなくHTTPSを使って、ポートは443を歩くので、私達の最後の命令は下記のように調整します。
system_profiler SPUSBDataType | sed -n -E 's/Serial Number: (.+)/\1/1p' | xargs rvictl -s | sudo tcpdump -i rvi0 src port 5223 or https
ステップ5、クイックスタート私たちは毎回上の長い一連のコマンドをノックすることができません。操作が便利なために、コマンドにaliasを追加して編集します。profile:
vim ~/.bash_profile
コマンドのエイリアスを追加:
alias apn="system_profiler SPUSBDataType | sed -n -E 's/Serial Number: (.+)/\1/1p' | xargs rvictl -s | sudo tcpdump -i rvi0 src port 5223 or https"
設定を有効にする
source ~/.bash_profile
第六段階、検収結果今度はクラスメートをテストしてからPushの取れない問題を調整します。USBを挿したら、私はただ必要です。
1はF 2を押してTerminalを起動します。(私のMacシステムはBetterTouch Toolで設定されたショートカットキーです。)
2アプリを入力して車に戻ります
Bingoさん、次はコーヒーを飲むことができます。静かにカバンを見てください。
締め括りをつける
上のスクリプトは、いくつかのツールを組み合わせるだけで、時間と精力を節約する効果があります。開発過程で似たような例がたくさんあります。いつもいくつかのツールや方法が私たちの開発効率を向上させてくれます。
FBは残業しなくてもいいです。私の空き時間が急に多くなりましたので、今年は多くの文章を更新する予定です。文章のポイントは思考の心得を共有することにあります。短編の消化がいいことが主です。このような文章の目的はツールを共有することにあります。
はい、以上はこの文章の全部の内容です。本文の内容は皆さんの学習や仕事に対して一定の参考学習価値を持っています。質問があれば、メッセージを残して交流してください。ありがとうございます。