gpt4 book ai didi

iOS 网络应用程序作为 native 应用程序

转载 作者:可可西里 更新时间:2023-11-01 17:18:06 25 4
gpt4 key购买 nike

我主要是一名网络开发人员,我在最后一刻接到任务,要为我们主持的 session 拼凑一个 iOS 应用程序。

我们为 session 构建了网络应用程序,并将其托管在我们的网络服务器上。按照教程 here我设法制作了一个非常简单的应用程序,它将在 UIWebView 中显示内容。

我们的其他开发人员为 android 构建了一些东西,它将缓存页面并检查服务器上的 .txt 文件以查看内容是否已更改。如果内容已更改,将获取新内容。 ( session 日程可能随时更改)。

我想在我的 iOS 应用程序中实现类似的功能。有没有一种简单的方法可以做到这一点?

这是我的 ViewController.m 的样子:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize appView;

- (void)viewDidLoad
{
[super viewDidLoad];

NSURL *path = [NSURL URLWithString:[NSString stringWithFormat:@"http://ict.uiuc.edu/railroad/GLXS/app/index.html"]];
NSURLRequest *request = [NSURLRequest requestWithURL:path];
[appView loadRequest:request];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

最佳答案

如果我没记错的话,您唯一需要执行的就是在对远程 .txt 文件执行编辑时刷新 Web View 。在我看来,您可以在您的应用程序首次运行时下载文件,然后在设置的计时器上下载文件,该计时器将在一定时间间隔(比如 1 分钟或一秒)内检查远程文件属性。这是示例代码,如果文件被修改,将触发并返回 true。

//here is sample code that will return true if file is modified
//url:your remote file url. filePathe: local file that you downloade when you app is run for first time
+ (BOOL)isServerURL:(NSString *)url NewerThanLocalFile:(NSString *)filePath {

if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {


NSDictionary *attributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil];

NSDate *date = [attributes fileModificationDate];

NSString *lastModifiedString = nil;
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString: url] cachePolicy:NSURLCacheStorageAllowed timeoutInterval:2];
[request setHTTPMethod:@"HEAD"];
NSHTTPURLResponse *response;
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error: NULL];
if ([response respondsToSelector:@selector(allHeaderFields)]) {
lastModifiedString = [[response allHeaderFields] objectForKey:@"Last-Modified"];
}

NSDate *lastModifiedServer = nil;
@try {

//set time format as required
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
df.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
df.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
lastModifiedServer = [df dateFromString:lastModifiedString];
}
@catch (NSException * e) {
NSLog(@"Error parsing last modified date: %@ - %@", lastModifiedString, [e description]);
}

if ([date laterDate:lastModifiedServer] == lastModifiedServer)
{
return YES;
} else {
return NO;
}

} else {
return YES;
}
}

如果计时器返回 YES,请刷新您的 WebView 。希望我清楚。

关于iOS 网络应用程序作为 native 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24892956/

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