1

バックグラウンド

UI のないアプリの一部を作成しています。バックグラウンドであなたの作業を監視し、作業のタイミングを調整します。

時間の重複や、時間データの中断があってはなりません。これらのいずれかがある場合、アプリのどこかにバグがあり、通知する必要があります。

私が欲しいもの

以下を実行する JGDataIntegrityController というクラス:

  1. データ ストアで重複した時間を確認してください。NSUserDefaults に保存されている最後の重複レポート日付以降にスキャンします。

  2. 重複する時間が見つかった場合は、レポートを作成します。

  3. レポートを送信します。

    送信に失敗した場合は、終了します。それ以外の場合は続行します。

  4. 重複を削除する

  5. NSUserDefaults の最後の重複報告日を更新する

  6. データブレークについて上記を繰り返します。

私が持っているもの

レポートを送信するためのすべてのハードワークを行う基本クラスを作成しました。

クラス図 http://synapticmishap.co.uk/ReportClasses.jpg

JGReportSender には次のコードがあります。

-(void)postReport:(NSString *)report {
    NSMutableDictionary *form = // Dictionary Holding Report;
    NSURLRequest *request = [NSURLRequest requestWithURL:@"http://postURL" postForm:form];
    [NSURLConnection connectionWithRequest:request delegate:self];
}

立ち往生している場所

レポートが送信された場合、どうすればよいですか?

デリゲート メソッド:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError*)error

レポートが送信されたときに呼び出されます。しかし、JGDataIntegrityController とどのように通信すればよいでしょうか?

私のがらくたのアイデア

私の考えはreportStatus、JGReportSender に NSNumber プロパティを持つことです。その後、デリゲート メソッドが呼び出されると、これが更新されます。

reportStatus = 1 は、「レポート送信 OK」を意味します。

reportStatus = 2 は、「レポートの送信に問題がある」ことを意味します。

次に、JGDataDuplicateReportSender と JGDataBreakReportSender の reportStatus のオブザーバーを追加できます。これにより、レポート送信エラーが処理されるか、続行されます。

良いアイデアはありますか?

これは本当に厄介な方法だと感じています。また、本当に明白なことを見落としているような気がします。

これをきちんとした方法で行う方法はありますか?

アップデート

言い忘れていましたが、これは 100% オプトイン機能です。デフォルトでは無効になっています。また、「データの破損が発生しました」から「このアプリケーションがこのドキュメント パスでアクティブになった後にデータの破損が発生しました」まで、3 つのレベルのプライバシーがあります。また、レポートも匿名になります。

私はすべてのプライバシーに関する懸念を認識しています - これはソフトウェアをより良くするためであり、人々をスパイするためではありません!

4

2 に答える 2

1

レポートの送信者にdelegateプロパティとプロトコルを指定します。少なくとも 2 つの方法があります:reportSenderDidSucceed:reportSender:failedWithError:。レポートの送信者は、connection:didFailWithError:メソッドから後者のメッセージを送信し、取得したエラー オブジェクトを渡します。

この機能をオプションにしていただければ幸いです。そうしないと、ユーザーから多くの怒りや好奇心をそそる電子メールが届くことが予想されます (Web ページで「このアプリはホームに電話をかけるため、このアプリを使用しないでください」という公的な警告は言うまでもありません)。

于 2010-01-04T17:33:31.397 に答える
0

Peterが私に提案しているように、誰かがあなた自身のデリゲートを実装するための良いチュートリアルを望んでいるなら、私はこれを見つけました:

http://cocoadevcentral.com/articles/000075.php

見てみな。素晴らしいです!

于 2010-01-04T21:47:19.570 に答える