2009-08-13 9 views
0

私はApp Storeでかなり普及しているBonjourベースのアプリケーションを持っています。それは完全に機能しますが、ユーザーの約0.2%が奇妙なバグを報告しています。「画面の端に矢印が表示されないので、他のユーザーと共有することはできません!言うまでもなく、これらの矢印を表示することは、ローカルドメイン上の特定のBonjourサービスのブラウジングに結び付けられます。Bonjourがブラウズ中に私に電話をかけることができないのは何ですか?

問題は、アップルのレビューチームが断続的にこの0.2%にあるようです。これは、あなたが想像するかもしれないように、レビュー結果には良くない。どんなに試しても、私はこのバグを再現できません。

私が持っているいくつかのログから、私のアプリケーションは正しく動作しているようですが、NSNetServiceBrowserデリゲートコールを受信して​​いないようです。何が原因でしょうか?スペックになるように長さが

  • 短いサービス名を持つ< 14文字を:私が試した

    物事。

  • @""ではなく、@"local."に公開しています(別名デフォルト検索ドメインを参照してください)。私のアプリは、とにかく広域ネットワークでは役に立たない。

私が試したことはありません。閲覧機を定期的に再起動してください。 (私は2つのブラウザを持っていますが、1つは従来の長い名前を、もう1つは新しい短いものを探しています)

+0

私たちはあなたがApp Store上にどのような種類のアプリケーションを持っているのかわかりませんが、@ ""の代わりに@ ""を使ってみてください。 'Back to my mac'(したがって、@ "local"の代わりに@ "")を介してピアにアクセスしようとする。私は、BTMMを介して設立された同僚にアクセスしようとする際に、このような問題に遭遇しました。 – cocoafan

答えて

0

問題が発生する可能性のある領域はたくさんあります。デリゲートメソッドに提供されたNSNetServiceインスタンスはオートレリースされているので、そのメソッドのスコープから再利用する予定がある場合は、それを保持する必要があります。ほとんどの人は自動的に保持されるようにNSMutableArrayまたはNSMutableDictionaryにそれを追加し、コレクションから削除するとオートレリースするだけです。これがコードの場合は、オブジェクトを追加する前にコレクションを適切に初期化してください。 nilへのメッセージは完全にOKなので、addObject:netServiceメッセージをnilに送るかもしれません。あなたはあなたの配列や辞書を初期化したことがないという明白な表示を受け取ることはありません、そして、すべてがうまく動いているかのように表示されます...ただし、ピアが状態を変えるとき、接続しようとすると "不思議な" Bonjourのトラブルシューティングでは、これが最初にトラブルシューティングを開始することをお勧めします。それは私たちの最善を尽くす。

バックグラウンドスレッドでネットワークコードを実行しているアプリの問題が簡単に見つかりませんでした。そのスレッドで処理されない例外がスローされました。これは、Cocoa/Unixのスレッディングに関するルールのため、アプリ全体をクラッシュさせることなく実行できます。ネットワーキングコードが「何の理由もなく動作しなくなる」場合は、iPhone Consoleを確認してエラーメッセージを記録することができます。 objc_exception_throwシンボルにブレークポイントを設定していることを確認してください。

詳細については、私の開発ブログで"Troubleshooting Bonjour Networking for the iPhone"の記事全文を読んでください。

+0

NSNetServiceは適切にメモリ管理され、実行され、メインスレッドで実行され、NSRunLoopで正しくスケジュールされます。 (リンクありがとう!) – millenomi

+0

2つの考え。 netService:didNotPublish:メソッドで名前の衝突のためのエラーハンドラを作成しましたか、またはpublishWithOptions:をNSNetServiceNoAutoRenameと共に使用していますか?また、公衆のホットスポットでは、ピアをローカルドメイン上で相互に直接通信することを防ぐことが一般的です(スイッチのPVLANエッジポートに似ています)。多くの安価なデバイスにはこのオプションがあります。それを優雅に扱う以外に、その周りに道はありません。これはAppleのテスターが確認しているものかもしれません。 – Zack

関連する問題