-3

私は xml http://weather.yahooapis.com/forecastrss?w=20070458&u=cを持っており、xml が更新されたときにデータも更新されるようにしたいと考えています。

ありがとう。

4

4 に答える 4

1

ご覧のとおり、このXMLにはttlノードがあり、存続時間は60秒であることを示しています。したがって、定期的に(TTL値に応じて1分に1回)このURLを確認し、最新の状態に保つことができます。

于 2012-07-12T12:59:24.390 に答える
0

次の 2 つのオプションがあります。

  1. 変更をアプリに通知するEasy APNSを実装します。また、通知メッセージに沿って xml データを直接配信することも、通知を受け取ったらすぐに xml を取得する要求を開始することもできます。
  2. xml の更新をチェックするリクエストを 1 ~ 10 ~ 60 分ごとに起動するタイマーをアプリに設定します。

要件と能力に応じて、どちらにも長所と短所があります。明確なことが 1 つあります。プッシュ通知を実装する以外に、リクエストを送信せずに外部からデータを受信することはできません。Easy APNSを実装すると、アプリケーションが実行されていない場合でも、アプリにデータが提供されます。反対に、タイマーを使用すると、最速/最も簡単な方法になります。あなたが決める。乾杯!

于 2012-07-12T13:31:00.117 に答える
0

xmlparserおよびNSXMLParser Class Referenceについては、このチュートリアルをお読みください。お役に立てると思います。

于 2012-07-12T13:01:58.123 に答える
0

あなたはそれを投票することができます。

static void timerHandler(CFRunLoopTimerRef timer, void *info)
{
    //request the xml here and compare it with the previous one
}

- (void)weatherMonitor
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    CFRunLoopTimerContext context = {0, self, NULL, NULL, NULL};
    CFRunLoopTimerRef timer = CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent(), 1, 0, 0, timerHandler, &context);//use your own time interval
    CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopDefaultMode);
    CFRelease(timer);
    CFRunLoopRun();
    [pool drain];
}

バックグラウンド スレッドで weatherMonitor を実行します。

于 2012-07-12T13:02:01.243 に答える