gpt4 book ai didi

ios - 显示来自服务器的更新数据的 watch 套件

转载 作者:行者123 更新时间:2023-11-29 02:02:33 36 4
gpt4 key购买 nike

场景是。

1) 我已经有适用于 iPhone 设备的 iOS 应用程序。该应用程序在仪表板页面中显示实时数据。通过从 iOS 应用调用 Web 服务,Dashboard 上的数据每 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"]; //
}

现在在 watchKitwillActivate 方法中添加一个计时器

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

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

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

现在在父应用程序的应用程序委托(delegate)中

- (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

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

关于ios - 显示来自服务器的更新数据的 watch 套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30162245/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com