如何在IOS中更新App文件(html)?

2024-02-24

我的应用程序非常简单。我有一些带有 html 文件名的 plist。当用户选择一行时,webview 会加载该 html 文件及其内容。我很好奇如何进行应用程序更新?例如:我有一个新的更新的 html 文件,并进行了更正,我希望用户通过单击应用程序中的按钮来下载该文件。我希望旧文件(html)被新文件替换。有没有办法做到这一点?不太确定从哪里开始,希望有人能指出正确的方向。我假设,无法更新 plist,我必须从 plist 切换到数据库,但问题仍然存在,如何让应用程序下载新文件并替换旧文件?

谢谢

只是为了详细说明一下。

我想我正在尝试找出在我的应用程序中完成更新的正确方法。我的 html 文件位于应用程序内,我假设我可能让应用程序最初连接到互联网并下载最新的内容文件(html、plist),将它们放入文档文件夹中,然后更新我的主屏幕 plist 文件?这是正确的思路吗?

我不希望该应用程序仅在互联网上使用,需要这些 html 文件可以离线使用。


正如许多人所建议的那样,我认为我的计划是从网络下载内容,将其保存在库文件夹中,然后从那里加载内容。在应用程序中,我将有一个更新按钮,每当用户选择时都会连接到服务器并更新内容。在 apple.com 找到示例代码(https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html )

稍微调整一下,它应该可以正常工作,如果尝试下载多个文件,这也可能会有所帮助。在 iPhone 应用程序中下载多个文件(目标 c) https://stackoverflow.com/questions/1016040/downloading-multiple-files-in-iphone-appobjective-c

- (IBAction)down
{
    // Create the request.
    NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://abc.com/missing.html"]
                                              cachePolicy:NSURLRequestUseProtocolCachePolicy
                                          timeoutInterval:60.0];
    // create the connection with the request
    // and start loading the data
    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
    NSString *msg;
    if (theConnection) {
        // Create the NSMutableData to hold the received data.
        // receivedData is an instance variable declared elsewhere.
        receivedData = [[NSMutableData data] retain];



    } else {
        // Inform the user that the connection failed.


    }

}


- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    // This method is called when the server has determined that it
    // has enough information to create the NSURLResponse.

    // It can be called multiple times, for example in the case of a
    // redirect, so each time we reset the data.


    // receivedData is an instance variable declared elsewhere.
    [receivedData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    // Append the new data to receivedData.
    //You can also use the connection:didReceiveData: method to provide an indication of the connection’s progress to the user.
    // receivedData is an instance variable declared elsewhere.

    NSString *msg = [NSString stringWithFormat:@"data %@",data,nil ];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"-download-" 
                                                    message:msg
                                                   delegate:nil 
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles: nil];
    [alert show];
    [alert release];
   //NSLog ([[NSString alloc] initWithFormat:@"The value: %d  object: %@\n", alphArray.count, [alphArray objectAtIndex:1.1],nil]);

    NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
    NSLog(@"the data %@",string);

    NSString *libraryPath = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *filePath = [libraryPath stringByAppendingPathComponent:@"Missing.html"];

    NSLog(@"Full path: %@", filePath);

    //NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);


    //write data to files
    [data writeToFile:filePath atomically:YES];

    [receivedData appendData:data];
}

- (void)connection:(NSURLConnection *)connection
  didFailWithError:(NSError *)error
{
    // release the connection, and the data object
    [connection release];
    // receivedData is declared as a method instance elsewhere
    [receivedData release];

    // inform the user
    NSLog(@"Connection failed! Error - %@ %@",
          [error localizedDescription],
          [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    // do something with the data
    // receivedData is declared as a method instance elsewhere
    NSLog(@"Succeeded! Received %d bytes of data",[receivedData length]);

    // release the connection, and the data object
    [connection release];
    [receivedData release];
}

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection
                 willCacheResponse:(NSCachedURLResponse *)cachedResponse
{
    NSCachedURLResponse *newCachedResponse = cachedResponse;

    if ([[[[cachedResponse response] URL] scheme] isEqual:@"https"]) {
        newCachedResponse = nil;
    } else {
        NSDictionary *newUserInfo;
        newUserInfo = [NSDictionary dictionaryWithObject:[NSDate date]
                                                  forKey:@"Cached Date"];
        newCachedResponse = [[[NSCachedURLResponse alloc]
                              initWithResponse:[cachedResponse response]
                              data:[cachedResponse data]
                              userInfo:newUserInfo
                              storagePolicy:[cachedResponse storagePolicy]]
                             autorelease];
         NSLog(@"Succeeded! Receive use:%@",newUserInfo);
    }
    NSLog(@"Succeeded! Received %@ - use:%@",newCachedResponse);
    return newCachedResponse;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在IOS中更新App文件(html)? 的相关文章

  • 如何调用 google 的 getBasicProfile() 来仅单击按钮即可登录 google?

    我在我的网站上使用谷歌登录
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • ToggleClass 动画 jQuery?

    我的网站上有一个部分 当用户单击时我希望它展开 我正在使用 jQuerytoggleClass为了这 expandable function e e preventDefault this closest article toggleCla
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • 为什么 Web Worker 性能在 30 秒后急剧下降?

    我正在尝试提高在网络工作人员中执行时脚本的性能 它旨在解析浏览器中的大型文本文件而不会崩溃 一切都运行得很好 但我注意到使用网络工作者时大文件的性能存在严重差异 于是我做了一个简单的实验 我在同一输入上运行脚本两次 第一次运行在页面的主线程
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and
  • iOS 防止计时器 UILabel 在数字变化时“晃动”

    我有一个UILabel它以以下格式显示计时器的输出MM ss SS 分 秒 厘秒 但是随着厘秒宽度的变化 它从左向右 摇动 例如 11 比 33 窄 有什么办法可以减轻这种情况吗 我尝试过将其居中 给它固定的宽度 但它们似乎没有帮助 从iO
  • 如何使用 vanilla JS 实现可维护的反应式 UI

    今天我遇到了一个问题 可以通过使用像 Vue 这样的反应式和状态管理框架来轻松解决 遗憾的是 无法使用它 以下 简化 情况 链接到代码笔 https codepen io theiaz pen BazErKV 我们有一个服务器渲染的页面 其
  • Django - 提交具有同一字段多个输入的表单

    预警 我对 Django 以及一般的 Web 开发 非常陌生 我使用 Django 托管一个基于 Web 的 UI 该 UI 将从简短的调查中获取用户输入 通过我用 Python 开发的一些分析来提供输入 然后在 UI 中呈现这些分析的可视
  • 禁用特定 div 上的 Tab 键

    我有以下结构 div div Some content div div Some content div div 我想 禁用 div2 上的 tab 键 我的意思是按下 tab 键时 div2 的元素不会获得焦点 有没有简单的方法可以使用
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • 如何让div与包含td的高度相匹配?

    我沿着桌子的一排布置了三个 面板 一个比另外两个高 我希望所有三个面板都与最高的一个的高度相匹配 我尝试将 div 的样式设置为 height 100 但是即使包含的 tds 增长 短面板仍然很短 我的 HTML 是由 JSF 生成的 因此
  • 元素和 svg 形状之间的白线

    大家好 我正在使用由 shapedivider 生成的 svg 整形器 您可以看到 有一条白线 我不知道为什么它在那里以及如何删除它 请你帮助我好吗 有形状分隔符的代码 custom shape divider bottom 1640714
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • 企业发行版在 Swift 应用程序中与 iOS8 配合不佳

    我在使用 swift 应用程序在 iOS 8 设备上运行 Enterprise 版本时遇到问题 如果我使用非企业帐户进行代码签名 它似乎工作正常 有人遇到这个问题吗 以下是我在尝试使用企业帐户运行构建以进行协同设计时在 iOS 设备上收到的
  • 如何将相机中的图像保存到 iPhone 图库中的特定文件夹?

    嘿 我是 iPhone 新手 最近我一直在尝试制作一个应用程序 基本上 我想要做的是 如果用户将从相机捕获任何图像 那么它应该保存在设备库中 我知道如何将照片保存在图库中 它对我有用 但我无法将所有捕获的图像保存到设备图库中的特定文件夹 例
  • 将 RequireJS 与遗留代码结合使用

    我正在处理一个非常大的项目 该项目使用 包含带有脚本标记的 javascript 文件的旧版 JSP 页面 使用其他 javascript 模块而不使用 RequireJS 的骨干模型和视图 现在 我们希望开始将 RequireJS 与 j
  • 从输入类型编号获取无效值

    我正在使用输入类型数字 当它无效时 我如何从中获取值 例如 使用类型编号并仅打印 e 这本身是无效的 我正在使用 React 但我认为这个问题非常普遍 onChange event console log event target valu
  • 无法使用 HTML 设置未定义 jQuery UI 自动完成的属性“_renderItem”

    我使用以下代码将 jQuery UI 自动完成项呈现为 HTML 这些项目在自动完成控件中正确呈现 但我不断收到此 JavaScript 错误并且无法移动过去 Firefox 无法转换 JavaScript 参数 Chrome 无法设置未定

随机推荐

  • 如何为 Flutter 中禁用的文本表单字段标签设置颜色主题?

    我想在我的 Flutter 应用程序中禁用文本字段的标签上应用一个主题 因为我现在的灰色很难阅读 我想将其应用到我的整个应用程序 所以我想使用主题 但是 我没有找到任何解决方案可以让我自定义标签的文本样式仅当文本表单字段被禁用时 如何在 F
  • Thunderbird 议程本机系统通知? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 几周来我一直在寻找这个问题的答案 我想我可能会直接问这个问题 我在 Windows 10 上使用 Thunderbird 102 6
  • 使用 PHP 5.5 在 Amazon EC2 上安装 pdo_mysql

    我创建了一个 Amazon Linux AMI 2013 09 02 服务器并安装了以下内容 yum install php55 php55 mbstring php55 soap php55 gd php55 mcrypt php55 p
  • 在 Procfile 中启动多个工作进程(开发环境与 Heroku)

    我有一个简单的 Procfile 内容如下 web bundle exec rails server thin p PORT worker bundle exec rake jobs work 在 Heroku 上 这将启动 N 个工作任务
  • Java HashMap 数组大小

    我正在阅读Java 8 HashMap的实现细节 谁能告诉我为什么Java HashMap初始数组大小具体是16 16岁有什么特别之处 为什么总是两个人的力量 谢谢 2 的幂之所以到处出现 是因为当用二进制表示数字时 就像在电路中一样 2
  • 我们如何为 pom.xml 创建一个 build.gradle 等效文件来构建和部署 AEM 代码?

    我正在尝试创建一个构建 gradle文件 例如完整的 pom xmlAEM Maven 原型 https github com Adobe Marketing Cloud aem project archetype or 懒骨头模板 htt
  • 将 id 分开并存储在两个不同的数组中

    NSString string vlaue Highlight 1234 1235 1236 1237 Issuer 100 101 102 103 我需要将 1234 1235 1236 1237 存储在一个数组中 100 101 102
  • 自动激活Maven中的父插件

    是否可以在父 POM 中定义一个已停用的插件 并且当子项目继承此插件时 它会自动激活 我猜您想在父 pom 中配置该插件 但仅在继承的项目中使用它 Maven 有一个专门的部分 在pluginManagement 中配置你的插件 但在你需要
  • 超线程/SMT 是一个有缺陷的概念吗?

    HT SMT 背后的主要思想是 当一个线程停止时 同一核心上的另一个线程可以选择该核心的其余空闲时间并透明地与之一起运行 2013 年 英特尔放弃了 SMT 转而采用乱序执行 Silvermont 处理器核心 因为他们发现这可以提供更好的性
  • 如何在JSP中访问请求属性?

    目前我使用 and then 但是我想知道是否可以使用 EL 或 JSTL 而不是使用 scriptlet 来完成同样的操作 EL表达式 requestScope Error Message JSP EL 中有几个隐式对象 看表达语言 ht
  • 如何使用 Javascript 截断/切片/修剪字符串中的最后一个字符?

    我有一根绳子 12345 00 我希望它返回12345 0 我看过trim 但看起来它只是修剪空白并且slice我不明白这是如何运作的 有什么建议么 您可以使用子串 https developer mozilla org en US doc
  • 如何获取具有唯一属性的对象列表

    背景 我有一个list This list有很多对象 每个对象都有一个id 现在对象有不同的类型 objects Aobject Bobject Cobject where gt gt gt Aobject Bobject True gt
  • 在 Go 中,我们可以使用每个键的锁来同步映射的每个键吗?

    在 Go 中 我们可以使用每个键的锁来同步映射的每个键吗 地图级全局锁总是需要的吗 文档说任何对地图的访问都不是线程安全的 但如果有一把钥匙 那么可以单独上锁吗 不完全是 但如果您只是从地图上读取指针并修改所指对象 那么您就没有修改地图本身
  • 我可以使用从其他项目链接的文件夹中的视图吗?

    我在一个解决方案中有多个 MVC 项目 按照这个接受的答案 Visual Studio 项目中文件夹的 添加为链接 https stackoverflow com questions 3610845 add as link for fold
  • 从平面文件向 SQL Server 插入数百万条记录有哪些陷阱?

    我即将开始编写一个 Windows 窗体应用程序 该应用程序将打开一个以竖线分隔且大小约为 230 mb 的 txt 文件 然后 该应用程序会将这些数据插入到 sql server 2005 数据库中 显然这需要快速发生 我在这个项目中使用
  • 在 iTunes Connect 中更改新应用程序版本号

    我相信我设法让自己在 iTunes Connect 中陷入某种奇怪的僵局 我有一个应用程序 当前版本为 2 14 写完更新后 我决定将新版本编号为2 2 iTunes Connect 允许我做到这一点 当我尝试验证新版本时 它告诉我在 iT
  • 难以理解捕获组和反向引用

    为了整理我对正则表达式的了解 我决定阅读一本关于它们的书 正则表达式简介 我知道这很愚蠢 但其中一个介绍性示例对我来说没有意义 d d 1 示例文本 123 456 7890 应该捕获第一个数字 123 谁能解释一下这里发生了什么 据我所知
  • 批量-通过输入更改帐户密码

    我想在启动时创建一个批处理文件 要求用户更改当前的管理员密码 Step 1 User logins Step 2 Batch file runs displaying message Please change Administrator
  • React - 身份验证过程:无法在调度过程中调度

    我已经开始通过flummox react bootstrap 和react router 来玩react 我正在尝试为我的网站创建一个基本的同构 CMS 语境 在身份验证方面 每个用户都有一个功能列表 每个组件都使用我的身份验证存储 可以
  • 如何在IOS中更新App文件(html)?

    我的应用程序非常简单 我有一些带有 html 文件名的 plist 当用户选择一行时 webview 会加载该 html 文件及其内容 我很好奇如何进行应用程序更新 例如 我有一个新的更新的 html 文件 并进行了更正 我希望用户通过单击