stringByEvaluatingJavaScriptFromString没有调用javascript函数

时间:2015-05-29 09:34:29

标签: objective-c iphone webview

我正在研究手机间隙iOS应用程序。我需要将didRegisterForRemoteNotificationsWithDeviceToken中收到的APN令牌传递给我的java脚本函数。

didRegisterFoRmoteNotification如下:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken NS_AVAILABLE_IOS(3_0)
 {
     NSString* token = [[[[deviceToken description]
                           stringByReplacingOccurrencesOfString: @"<" withString: @""]
                          stringByReplacingOccurrencesOfString: @">" withString: @""]
                         stringByReplacingOccurrencesOfString: @" " withString: @""] ;
     NSLog(@"Device_Token     -----> %@\n",token);

    [self.viewController.webView loadHTMLString:@"<script type=text/javascript src=js/test.js></script>" baseURL:nil];
    [self.viewController.webView stringByEvaluatingJavaScriptFromString:@"myFunc('skdjch')"];
}

和javascript函数是:

function myFunc(str){
 alert(str)
};

但是,myFunc没有被调用。 如果我从其他一些java脚本文件中调用myFunc,那么它可以正常工作并显示警报。 任何人都可以解释我的错误吗?

1 个答案:

答案 0 :(得分:0)

嘿praneti patidar你不能像function myFunc(str){ alert(str) };那样调用 希望你是新手Phone gap你需要桥接(插件)将值从原生iOS传递到你的Phongap Javascript函数

你的js应该是这样的

        `function onDeviceReady() {
           cordova.exec(function(winParam) {
                        if(winParam[2]=="8.0")
                        {

                        $rootScope.ios7subheadermargin="0%"
                        $rootScope.infotop="-13px"
                        $rootScope.infoleft="13%"
                        }
                        else
                        {

                        $rootScope.ios7subheadermargin="1%"
                        $rootScope.infotop="-16px"
                        $rootScope.infoleft="15%"
                        }
                        }, function(error) {
                        //alert(error)
                        }, "Pdfconverter","get_location",["",true]);

           }`

这里Pdfconverter是本机iOS类(插件),其中get_location是方法,它就是这样的

 -(void)get_location:(CDVInvokedUrlCommand *)command
{
    cmds = command;
    NSLog(@"The string is:%@",[command.arguments objectAtIndex:0]);

    CDVPluginResult *result;
    NSString *str_lattitude=[NSString stringWithFormat:@"%@",kUserlattitude];
    NSString *str_longitude=[NSString stringWithFormat:@"%@",kUserlongitude];
    NSString *str_Osversion=[NSString stringWithFormat:@"%@",kUserVersion];
    NSArray *arr_values=[[NSArray alloc]initWithObjects:str_lattitude,str_longitude,str_Osversion, nil];

    result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsArray:arr_values];
    [self.commandDelegate sendPluginResult:result callbackId:cmds.callbackId];

}

在上面同样的我发送我的lattitude,经度和操作系统版本作为数组,在你的情况下,你将发送设备令牌......

上面的winParam包含数组值......

希望这有助于......:)