gpt4 book ai didi

ios - 可以从 iOS PhoneGap 插件启动index.html

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

首先让我描述一下我的场景:我有一个 phonegap 应用程序,它只是一个简单的 View ,带有用于配置远程服务器地址的输入文本和一个启动器 btn,通过单击 btn,它会启动配置的托管应用程序并显示到原生网页 View 。

但是,如果用户想要重新配置远程应用程序地址,我需要能够返回到基于本地的配置 View ,因此我在托管应用程序中添加了一个 btn。由于 webviews(android 和 ios)对本地资源的访问限制,我不能简单地通过 JavaScript 重新加载 file:///blarblar/index.html。

为了解决这个问题,我尝试通过 android 中的 native 插件进行实际的重新加载,如下所示:

 @Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
final CallbackContext ctxt = callbackContext;

if (action.equals(ACTION_RELOAD)) {
final Mobility act = (Mobility)cordova.getActivity();
act.runOnUiThread(new Runnable() {
@Override
public void run() {
act.reloadMainView(); //--> this is calling super.loadUrl(Config.getStartUrl()); in MainActivity class
ctxt.success("reloaded");
}
});

return true;
}

callbackContext.error("Invalid action" + action + args);
return false;
}

这在 android 中工作正常。然后我尝试开发一个与 iOS 相同的版本,不幸的是我在 iOS 原生开发方面非常有限,通过在 Web 中搜索大量资源,得出以下代码

#import "UiWrapper.h"
#import "../Classes/AppDelegate.h"
#import <Cordova/CDV.h>

@implementation UiWrapper

- (void) reload:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* pluginResult = nil;

AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];
CDVViewController* topview = appDelegate.viewController;

NSLog(@"test");
[topview.webView stringByEvaluatingJavaScriptFromString:@"location='file:///var/mobile/Applications/A70D02B2-ED48-4918-9CF5-DA3953111636/SM%20Mobile%20Client.app/www/index.html'"];


pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"reloaded"];

[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}

@end

它实际上不起作用,我认为原因是代码正在回调 JavaScript 以进行实际重新加载,这不会解决访问本地资源的限制。我需要的是直接在插件中加载 index.html。我不知道如何在 iOS 中执行此操作

所以我的问题是:是否可以从 iOS 插件加载 index.html 以及如何执行此操作的任何线索?

最佳答案

好吧,终于找到如何在objective-c中将UIWebView重置为本地index.html

AppDelegate* appDelegate = [[UIApplication sharedApplication] delegate];
CDVViewController* topview = appDelegate.viewController;

NSString* path = [[NSBundle mainBundle] pathForResource:@"www/index" ofType:@"html"];
NSURL* url = [NSURL fileURLWithPath:path];
NSURLRequest* request = [NSURLRequest requestWithURL: url];

[topview.webView loadRequest:request];

关于ios - 可以从 iOS PhoneGap 插件启动index.html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360725/

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