在AppDelegate中从Objective-C调用JavaScript
有没有办法从Objective-C调用设备令牌 我刚刚创建了一个cordova ios项目,因为我只有Objective-C的基本知识。它将自动生成在AppDelegate中从Objective-C调用JavaScript,javascript,ios,objective-c,cordova,Javascript,Ios,Objective C,Cordova,有没有办法从Objective-C调用设备令牌 我刚刚创建了一个cordova ios项目,因为我只有Objective-C的基本知识。它将自动生成AppDelegate.mclass @implementation AppDelegate - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { self.viewControl
AppDelegate.m
class
@implementation AppDelegate
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.viewController = [[MainViewController alloc] init];
NSString * jsCallBack = [NSString stringWithFormat:@"myFunction()"];
[webView stringByEvaluatingJavaScriptFromString:jsCallBack];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end
如何从inappbrowser中加载的index.html文件调用javascript函数
<!DOCTYPE html>
<html>
<head>
<title>Device Ready Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// Wait for device API libraries to load
//
myFunction()
{
alert('called');
}
function onLoad() {
document.addEventListener("deviceready", onDeviceReady, false);
}
// device APIs are available
//
function onDeviceReady() {
// Now safe to use device APIs
}
</script>
</head>
<body onload="onLoad()">
</body>
</html>
设备就绪示例
//等待加载设备API库
//
myFunction()
{
警报(“被呼叫”);
}
函数onLoad(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
//设备API可用
//
函数ondevicerady(){
//现在可以安全地使用设备API了
}
首先:
确保您的webview已经加载了HTML页面(如果您还需要修改DOM中的某些UI元素,它可能也应该已经被呈现。加载本身是异步执行的。这意味着您不能在单个进程中实现它,而必须等到它准备好进行操作为止)
当您在应用程序的start方法中通过注入调用函数时,我认为webview还没有准备好
对于iOS应用程序,请使用代理的方法:
UIWebViewDelegate会通知您某些状态(-更改)。例如:
@property (nonatomic) UIWebViewDelegate *webDelegate;
相应地设置webView的委托:
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
self.viewController = [[MainViewController alloc] init];
// I just used your very own code for this, I think you will have a separate property for this webView ?
webView.delegate = self;
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
并且还实现一个webview委托方法(在本例中,当webview完成加载时:
@implementation AppDelegate
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
...
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSString * jsCallBack = [NSString stringWithFormat:@"myFunction()"];
[webView stringByEvaluatingJavaScriptFromString:jsCallBack];
}
@end
您可以在objective C中的任意位置调用javascript函数:
NSString *str=@"window['function_name'].apply(window,['param1','param2'])";
[webview evaluateJavaScript:str completionHandler:nil];
我想我们需要您提供更多信息:如果您想用Javascriot将其注入HTML:HTML/Javascript是什么样子的,是否有一个函数?此外,什么样的“设备令牌”对于推送服务,请详细说明您的要求,并提供一些附加信息。鳞翅目i改进了详细的问题