wendux / DSBridge-IOS

:earth_asia: A modern cross-platform JavaScript bridge, through which you can invoke each other's functions synchronously or asynchronously between JavaScript and native.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

evaluateJavaScript传值失败

YiFan-Tong opened this issue · comments

commented

请大家指导一下,我不知道这块应该怎么写,我还没有完全理解这个工具
我在使用dsbridge的demo,然后在其中的JsApiTest.m新加了一个调用系统联系人的api,之后点击联系人号码,我想将联系人的手机号传递给H5那边,但是一直传递不过去,我不知道应该怎么写,请指导一下,下面是我的部分代码

#import "JsApiTest.h"
...
...
...
@interface JsApiTest(){
  NSTimer * timer ;
  void(^hanlder)(id value,BOOL isComplete);
  int value;
}
@end

....
#pragma mark - Contacts
- (NSString *)pushContacts:(NSDictionary *) args {
// 1.创建选择联系人的控制器
CNContactPickerViewController *contactVC = [[CNContactPickerViewController alloc] init];
// 2.设置代理
contactVC.delegate = self;
// 3.弹出控制器
[[AppDelegate shareInstance].mainNav presentViewController:contactVC animated:YES completion:nil];
return nil;
}

#pragma mark - CNContactPickerDelegate
// 2.当选中某一个联系人时会执行该方法
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty
{
CNContact *contact = contactProperty.contact;
// 1.获取联系人的姓名
NSString *lastname = contact.familyName;
NSString *firstname = contact.givenName;
NSLog(@"%@ %@", lastname, firstname);
// 2.获取联系人的电话号码(此处获取的是该联系人的第一个号码,也可以遍历所有的号码)
NSArray *phoneNums = contact.phoneNumbers;
CNLabeledValue *labeledValue = phoneNums[0];
CNPhoneNumber *phoneNumer = labeledValue.value;
NSString *phoneNumber = phoneNumer.stringValue;
NSLog(@"%@", phoneNumber);
// NSString *js = [NSString stringWithFormat:@"phoneNumber(\'%@\')", phoneNumber];
//
// [self.message.webView evaluateJavaScript:js completionHandler:nil];
// NSLog(@"%@", self.message.webView);
}

用的H5页面是demo中的test.html修改的,h5那边可以通过call.pushContacts调起手机相册,然后手机端点击联系人手机号,我拿到了手机号,但是不知道怎么传递到H5那边,用了 evaluateJavaScript没用, 也不知道是不是我的self.message.webView找的不对还是其他问题,我的 self.message.webView是这个东西

@property(retain, nonatomic) WKScriptMessage *message;

请求大佬们救命!!!

commented

找到原因了,传值方法没问题,但是webview找错了