显示来自服务器的更新数据的手表套件

watch kit showing the updated data from the server

场景是。

1) 我已经有适用于 iPhone 设备的 iOS 应用程序。该应用程序在仪表板页面中显示实时数据。 通过从 iOS 应用程序调用 Web 服务,每 60 秒更新一次仪表板上的数据。

2) 我想基于相同的 iPhone 应用程序开发 apple watch 应用程序,它将在每 60 秒后显示包含数据更新的仪表板。

如何实现。任何建议都非常感谢。谢谢。

我有同样的场景要执行。所以我在我的应用程序中所做的是:

AppDelegate.m

中的 didFinishLaunchingWithOptions 方法中
timer =  [NSTimer scheduledTimerWithTimeInterval:120 target:self selector:@selector(refreshData) userInfo:nil repeats:YES];

refreshData 方法看起来像

-(void)refreshData
{
    // Update Database Calls
    // below line Save new time when update request goes to server every time.
    [[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"databaseUpdateTimestamp"]; // 
}

现在在 watchKit

中的 willActivate 方法中添加一个计时器
 timer = [NSTimer scheduledTimerWithTimeInterval:120 target:self selector:@selector(refreshData) userInfo:nil repeats:YES]; 

refreshData 方法将每 2 分钟向父应用程序调用一次请求。

- (void) refreshData
{
     NSDictionary *dic = [[NSDictionary alloc] initWithObjectsAndKeys:@"database",@"update", nil];
     [WKInterfaceController openParentApplication:dic reply:^(NSDictionary *replyInfo, NSError *error)
     {
         NSLog(@"%@ %@",replyInfo, error);
     }];
} 

现在在父应用程序中的应用程序代理中

- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void(^)(NSDictionary *replyInfo))reply
{
    if([userInfo objectForKey:@"update"])
    {
        NSString *strChceckDB = [userInfo objectForKey:@"update"];
        if ([strChceckDB isEqualToString:@"database"]) 
        {
            NSDate *dateNow = [NSDate date];
            NSDate *previousUpdatedTime = (NSDate*)[[NSUserDefaults standardUserDefaults] objectForKey:@"databaseUpdateTimestamp"];
            NSTimeInterval distanceBetweenDates = [dateNow timeIntervalSinceDate:previousUpdatedTime];
            if (distanceBetweenDates>120) // this is to check that no data request is in progress 
            {
                [self.timer invalidate]; // your orignal timer in iPhone App 
                self.timer = nil;
                [self refreshData]; //Method to Get New Records from Server
                [self addTimer]; // Add it again for normal update calls
            }
        } 
    }
    else
    {
    //do something else
    }
}

使用此更新数据在 WatchKit 应用程序中填充您的应用程序仪表板。

一些有用的链接可以帮助您完成此任务:

You can create an embedded framework to share code between your app extension and its containing app

Adding an App to an App Group

希望这对你有帮助....!!!