由于URL,Cordova Ionic电子邮件插件无法在iOS 9上运行

时间:2015-10-07 05:16:03

标签: cordova ios9 cordova-plugins

我正在使用email composer plugin作为我的离子应用程序,我在iOS 9上遇到了一个问题,我无法使用外部电子邮件应用程序。我已经尝试将以下内容添加到plist中,因为它是一个url方案,但似乎没有帮助。

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>mailto</string>
    </array>

错误xcode给出:

2015-10-06 22:10:45.037 NSP[1830:29571] -canOpenURL: failed for URL: "mailto:test@test.de" - error: "(null)"
2015-10-06 22:10:45.044 NSP[1830:29571] -canOpenURL: failed for URL: "mailto:test@test.de" - error: "(null)"
2015-10-06 22:10:45.047 NSP[1830:29571] -canOpenURL: failed for URL: "mailto:test@test.de" - error: "(null)"

是的,一次通话就有3个错误。这是呼叫代码:

$cordovaEmailComposer.isAvailable().then(function () {
                $cordovaEmailComposer.open({
                    to: [], // email addresses for TO field
                    cc: [], // email addresses for CC field
                    bcc: [], // email addresses for BCC field
                    attachments: [], // file paths or base64 data streams
                    subject: item.name, // subject of the email
                    body: item.name + " download link: " + item.link, // email body (for HTML, set isHtml to true)
                    isHtml: false, // indicats if the body is HTML or plain text
                }, function () {
                    //console.log('email view dismissed');
                }, this);
            }, function () { //Not available
                MessageBox.ShowAlert("Unavailible", "Email is currently unavailable on this platform");
            });

有什么方法可以解决这个问题吗?它在Android和早期版本的iOS上运行良好,还是一个我无法解决的插件问题?一切都在更新。可能的解决方法或其他插件使这项工作?我尝试了解决方案here但我不认为这与我的问题有关。

3 个答案:

答案 0 :(得分:1)

好。两个随机猜测。如果这些不起作用,我会删除它。

1)几天前发布了对iOS9 Cordova的支持。

尝试升级,这可能会解决您的问题:

https://cordova.apache.org/announcements/2015/11/02/cordova-ios-3.9.2.html

2)'mailto:'可能受 Cordova Tools 5.x 所需的whitelist规则约束。您需要应用整个whitelist或仅CSP部分。

HOW TO apply the Cordova/Phonegap the whitelist system

我认为没有迹象表明这是在新的Apple ATS安全过滤器下,但它可能是。

要明确,请将CSP应用于网页,然后应用whitelist和插件,最后是Apple的ATS。该文档中列出了一些快捷方式。

有任何问题吗?可以肯定在我的句柄前使用@,这样我就能得到消息。

答案 1 :(得分:1)

我遇到了同样的问题。

在添加LSApplicationQueriesSchemes并且没有运气之后,我尝试了一个实际的设备并且它确实正常工作。它只是在模拟器中不起作用。

添加LSApplicationQueriesSchemes的快速方法是:

cordova插件添加cordova-plugin-queries-schemes

答案 2 :(得分:1)

我可以确认,当配置了邮件客户端的实际设备上安装了stock插件(没有LSApplicationQueriesSchemes)时,它运行良好。我认为canOpenURL问题主要发生在模拟器上。

即使在实际的设备上,如果你没有设置默认的邮件客户端,那么你会得到各种奇怪的崩溃(控制器不会显示在UI视图中等)。

只需在配置了邮件客户端的设备上试用它。