在WKWebview中无法自动播放(响应式语音文本到语音)

时间:2016-02-10 09:32:51

标签: ios

我正在尝试将网页加载到WKWebView中,其中包含响应式JS文本到语音。网页自动完成加载后播放文本到语音。

但是在应用程序内部,文本到语音自动播放在页面加载时不起作用。它只有在我通过按钮点击应用程序内部启动javascript方法时才有效。

加载页面时是否可以自动播放?如果可能的话我怎样才能完成它。

- (void)viewDidLoad {

[super viewDidLoad];

WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.requiresUserActionForMediaPlayback = NO;

wkWebview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) configuration:config];
wkWebview.navigationDelegate = self;
[self.view insertSubview:wkWebview atIndex:0];

NSURL *url;
url = [NSURL URLWithString:[[self.content objectAtIndex:0] objectForKey:@"URL"]];

NSURLRequest *request = [NSURLRequest requestWithURL:url];
[wkWebview loadRequest:request];


button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self
           action:@selector(aMethod:)
 forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self.view addSubview:button];
}

这是按钮操作

- (IBAction)aMethod:(id)sender
{
     [wkWebview evaluateJavaScript:@"document.getElementsByName('Play')[0].click()" completionHandler:^(id _Nullable sds, NSError * _Nullable error) {
    }];
}

1 个答案:

答案 0 :(得分:1)

感谢您使用ResponsiveVoice!

Apple阻止您在没有用户启动的情况下在javascript中执行操作。例如,您无法播放音频,重定向页面,或者,在这种情况下,播放TTS。

在Safari中(可能在WebView中也是如此),这只需要完成一次。因此,用户的第一次点击将删除此限制。例如,您可以放置​​一个"开始"按钮并使用它来播放空白文本("")。这将允许您下次从代码启动TTS。

ResponsiveVoice为您完成此操作,您只需将此函数附加到任何对象的click事件:

long.TryParse()

然后你可以像往常一样打电话给speak()。

希望它有所帮助。