Tag: phonegap插件

Cordova-plugin-cocoapods-support的Cordova编译问题修补程序

cordova-plugin-cocoapods-support是一个Cordova / PhoneGap插件,它允许您在XML文件中为iOS定义插件或项目CocoaPods依赖项。 但是,当与cordova-ios@4.5.2或更高版本一起使用时,Cordova编译命令将失败。 本文将指出导致此问题的更改以及使iOS构建再次通过的潜在解决方案。 当Cordova发布cordova-ios@4.5.2时,引入了新变量location ,其中包含了必要的信息,以供平台构建器获取捆绑包标识符。 新变量的属性之一是pbxproj文件的路径。 该文件位于xcodeproj目录中。 在Cordova准备项目之后,将执行cordova-plugin-cocoapods-support插件的after_prepare挂钩脚本,并对平台构建脚本进行修改。 执行的修改之一是非常松散的查找,并将xcodeproj所有实例替换为xcworkspace 。 由于意外更改,生成器在尝试从xcworkspace目录解析pbxproj文件时失败,因为找不到文件。 该问题只能通过cordova compile命令看到,而不能通过cordova build命令看到。 这是因为build命令执行所有构建步骤,并从缓存中维护包标识符信息,并且不需要解析pbxproj文件。 此解决方案无需多说。 如果您是插件开发人员,并且有可能,那么删除插件依赖项并将Cordova的本机实现用于CocoaPods支持将是理想的选择。 这是有关如何使用Cordova的实现加载OpenSSL Pod文件的示例。 <framework src=" OpenSSL ” type=” podspec ” spec=” 1.0.210 ” /> 您可以在此处找到更多详细信息。 如果您不是插件开发人员,并且不能删除插件依赖项,则可以创建自己的挂钩脚本来还原重大更改。 首先,我们将需要创建钩子脚本,最后将其添加到项目的config.xml中,以便使用它。 创建脚本 让我们创建一个名为beforeCompileCocoapodsHotfix.js的新文件,并将其添加到hooks文件夹中。 路径应类似于以下/hooks/beforeCompileCocoapodsHotfix.js 。 接下来,我们将添加脚本内容。 该脚本将仅显式搜索重大更改并还原。 这不会还原插件的所有更改。 最后,我们将向项目的config.xml添加对新钩子脚本的引用,以在编译前执行。 由于这是一个iOS依赖项,因此我们将其添加到iOS平台声明中。 <platform name =“ ios ”> <hook type =“ before_compile ” src […]

在iOS的Swift 3中编写Cordova插件

本文是对我在2016年4月写的一篇文章的更新,并且已被修改为使用Xcode 8.2支持的“现代” Swift 3语法。 此外,它已更新为使用Cordova 6.4.0。 您可以在 此处 找到使用Swift 2语法的原始文章 。 自2008年App Store首次开放以来,希望开发iOS应用的开发人员必须学习Objective-C。 这包括那些选择使用Apache Cordova的混合模型的人,因为在Objective-C中还编写了可扩展Cordova覆盖本机API的插件。 长期以来,这是可用于iOS开发的唯一语言。 事情在2014年发生了变化,当时苹果在当年的全球开发者大会上发布了Swift编程语言。 从那时起,苹果一直在不断发展Swift语言,分别发布了版本2和版本3,并更新和改进了语言语法,并于2015年底开放了源代码。这引起了人们对于使用该语言进行本机应用程序开发以及其他方面的极大兴趣。 Cordova混合应用程序开发人员可以继续使用平台生态系统提供的出色的现成设备API插件,但是经常需要编写特定于项目的插件。 虽然Cordova的CLI生成的核心应用程序代码继续使用Objective-C,但是开发人员现在可以在制作自己的插件时在Objective-C或Swift之间进行选择。 让我们看一下复制在上一篇博客文章中使用Objective-C构建的“ ModusEcho”插件所涉及的内容。 这次,我们将使用Swift作为本机代码。 回顾一下,此插件借鉴了Cordova文档中的“ echo”示例,并具有两个功能: echo:带有字符串参数,显示“ Toast”(本地对话框,显示在短时间后自动关闭的消息),并将传递给它的字符串返回给调用者 echojs:带有字符串参数,将传递给它的字符串返回给调用方,完全用JavaScript实现,没有本机代码 初始插件创建 和以前一样,Plugman可以通过创建插件支架来帮助我们前进,就像Cordova CLI对新应用程序所做的一样。 我们可以创建一个新的“ ModusEchoSwift”插件,如下所示: 插件创建-名称ModusEchoSwift –plugin_id com-moduscreate-plugins-echoswift –plugin_version 0.0.1 –path modusechopluginswift 这不会将任何输出记录到控制台,但是会在“ modusechopluginswift / ModusEchoSwift”中设置支架。 在该文件夹中,我们可以找到Plugman生成的样板plugin.xml: ModusEchoSwift 让我们更改“ clobbers”元素,通过更新plugin.xml使其看起来像“ modusechoswift。”,使Cordova应用程序可以访问我们的插件函数: ModusEchoSwift 保存更改后,我们现在可以查看插件的JavaScript界面​​。 实施通用JavaScript接口 Plugman创建的初始JavaScript模块“ www / […]

使用Phonegap Plugin Push 3.x和Meteor 1.7在iOS中启用推送通知功能

我们生活在一个拥有几乎所有内容的移动应用程序的世界中。 流星的惊人之处在于它允许将网络代码用于android和iOS应用。 我使用流星开发混合应用程序不到一年,但我还没有发现很多东西。 我发现给我带来困难的一个问题是,由于部署是自动化的,因此在XCode 9.x中为iOS自动启用了推送通知。 我正在使用raix:push@3.3.0在Android和iOS上发送推送通知。 它具有以下依赖性: 通过npm安装的phonegap-plugin-push@2.2.3(负责注册用于推送通知的应用程序) 作为cordova插件安装的cordova-plugin-device@1.1.6 现在,当您构建应用程序并看到项目内部功能时,默认情况下不会启用推送通知。 不用担心,我得到了你! 在流星项目的mobile-config.js中,编写以下代码: App.appendToConfig(` 开发 生产 `) 当您重建应用程序时,瞧! 现在默认情况下启用了推送通知! 注意 :您必须启用将推送通知配置添加到您的应用ID,这可以通过开发者的帐户通过编辑应用ID来完成。

PhoneGap Build 7.0.1支持iOS启动演示图板(是!)

随着2017年8月1日发布的PhoneGap Build 7.0.1,我们现在可以将iOS Launch Storyboards与PhoneGap Build一起使用。 这意味着我们可以在Cordova,PhoneGap 和 PhoneGap Build中使用它们,这为每个工具带来了完全的奇偶校验。 好极了! 这会带来一些后果: 现在,PhoneGap Build可以使用每台设备的本机分辨率,以iPad Pro 10.5“和12.9”尺寸为目标。 Apple没有提供其他支持的方法来针对这些设备上的本机分辨率,除非使用情节提要。 只要Apple继续使用相同尺寸的尺寸类别,PhoneGap Build现在就可以在将来针对任何新的屏幕尺寸(iPhone 8, *咳嗽,咳嗽* )。 PhoneGap Build应用程序现在可以支持带附加配置/插件的分屏和滑盖式多任务处理。 最酷:您可以使用单个图像来定位所有设备的外形尺寸和视口(如果需要)。 什么是启动故事板? 苹果长期以来一直在努力使开发人员构建能够响应视口大小的应用程序。 作为混合开发人员,这听起来像是“响应式设计”。 但是,在iOS开发的初期,开发人员将代码编码为特定的视口大小,因为只有一个视口大小,所以工作了……直到有很多视口不起作用为止。 长期以来,显示启动画面的唯一方法是“启动图像”-特定分辨率的PNG文件。 苹果公司长期以来也一直在尝试提出这样的想法,即启动映像应以未填充状态反映应用程序。 其想法是给人以更快的启动速度的印象。*但是,不利的一面是,开发人员必须为每个可能的视口创建单独的启动图像版本。 一开始没什么大不了的,但是现在呢? * 亲自? 我认为这会使发射速度变慢 。 但这就是我。 随着Apple发布具有新屏幕尺寸的设备,他们还开始使用这些启动图像作为该应用程序支持的视口的指示器。 如果该应用程序未提供适当大小的启动图像,则将缩放该应用程序或将其装箱。 然后发布了iPad Pro 12.9“,Apple 没有提供支持的方法来生成iPad Pro 12.9”启动图像 。 他们还发布了分体式和滑盖式多任务处理功能,没有一种方法可以为所有可能发生的所有广泛变化的视口生成启动图像。 唯一受支持的方法是使用Xcode 6中引入的功能:启动情节提要。 如果您完全熟悉Xcode中的情节提要,那么启动情节提要只是分配给应用程序启动时显示的情节提要。 如果您不熟悉情节提要,那么简单的解释就是:情节提要是应用程序用户界面的可视化设计的集合,以及设计之间的连接(顺序)。 现在,情节提要是提供启动图像的首选方法。 这很有道理-如果您应用的启动图像应该代表一个未填充的UI,那么您(潜在地)可以将现有的故事板重新用作启动图像,并完成此操作。 情节提要板还具有根据大小类调整布局的方法,因此可以使它们响应视口大小。 […]

OnLocationStateChange cordova应用程序崩溃

我正在工作的应用程序基本上是使用cordova geolocation插件提取用户位置,然后在google地图上显示位置。 我面临的问题是,当我杀了应用程序,并closures/位置服务的设置应用程序崩溃。 java.lang.RuntimeException:无法启动接收器cordova.plugins.Diagnostic $ LocationProviderChangedReceiver:java.lang.NullPointerException:试图对null对象引用调用虚拟方法'void cordova.plugins.Diagnostic.notifyLocationStateChange()' 导致:java.lang.NullPointerException:试图调用虚拟方法'void cordova.plugins.Diagnostic.notifyLocationStateChange()'对空引用 这是直接从Android Studio运行应用程序后得到的错误屏幕截图 我正在使用诊断插件,因为我正在API 23testing应用程序即棉花糖,这需要运行时间的权限。 如果我删除诊断插件的应用程序崩溃,一开始在棉花糖。 该应用程序在23以下的API上运行,也不会崩溃,当我打开/closures位置服务。 build议/build议欢迎。

为Phonegap / Cordova iPhone应用程序设置CMS

当使用Phonegap / Cordova制作iPhone应用程序时,是否可以将基于Web的CMS附加到该应用程序,以便从中取消数据,以便非技术用户可以更新应用程序? Usualy你只是使用html,css,jquery / js来构build它们,但是如果有更简单的方法来更新它们,我会漫游吗?

iOS 11状态栏将视图向下推动20px

我正面临iOS 11状态栏在首次启动时推低视图的问题,但是当我点击一个input时,它将视图推回到正常状态。 我添加了viewport-fit=cover但是没有解决这个问题。 我正在使用cordova-plugin-statusbar <plugin name="cordova-plugin-statusbar" spec="~1.0.1" /> 问题的屏幕截图然后推回到正常: 我正在使用Framework7的UI和一些插件: cordova-plugin-camera 2.4.1 "Camera" cordova-plugin-compat 1.2.0 "Compat" cordova-plugin-console 1.0.5 "Console" cordova-plugin-file 4.3.3 "File" cordova-plugin-file-transfer 1.6.3 "File Transfer" cordova-plugin-keyboard 1.2.0 "Keyboard" cordova-plugin-statusbar 2.3.0 "StatusBar" cordova-plugin-whitelist 1.3.3 "Whitelist" es6-promise-plugin 4.1.0 "Promise" phonegap-plugin-push 2.0.0 "PushPlugin" 这是我的config.xml: <?xml version='1.0' encoding='utf-8'?> <widget id="APPPACKAGENAME" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>Mayday</name> <description> Senior Project By […]

在DevExtreme / Phonegap上用FCM推送通知

我使用基于PhoneGap的多平台工具DevExtreme开发了我的应用程序。 现在,我正在尝试使用phonegap-plugin-pushpipe理推送通知。 我的第一个简单目标是发送和接收来自FCM(Firebase Cloud Messaging)的一些通知。 我更喜欢从Android开始,所以我在FCM上设置了我的Android应用程序。 在这里,我拿了发件人ID。 在文档之后,我修改了config.xml如下: <widget id="com.devexpress.apptemplate" version="1.0" versionCode="1"> <name>ApplicationTemplate</name> <description>Template</description> <preference name="phonegap-version" value="cli-6.4.0" /> <preference name="permissions" value="none" /> <preference name="prerendered-icon" value="true" /> <preference name="android-windowSoftInputMode" value="adjustPan" /> <preference name="SplashScreen" value="splash" /> <preference name="SplashScreenDelay" value="60000" /> <preference name="AutoHideSplashScreen" value="false" /> <preference name="SplashShowOnlyFirstTime" value="false" /> <preference name="FadeSplashScreen" value="false" /> <preference name="ShowSplashScreenSpinner" value="false" /> <preference […]

Phonegap 3.3.0不能添加任何插件

我正在尝试将barcodescanner插件添加到Phonegap 3.3.0项目中。 重现步骤: $ cordova create app de.app.name "app-name" $ cd app $ cordova platform add ios $ cordova plugin add com.phonegap.plugins.barcodescanner Fetching plugin from "com.phonegap.plugins.barcodescanner"… Starting installation of "com.phonegap.plugins.barcodescanner" for ios Error during processing of action! Attempting to revert… /usr/local/lib/node_modules/cordova/node_modules/q/q.js:126 throw e; ^ Error: Uh oh! cannot find "/path/app/plugins/com.phonegap.plugins.barcodescanner/src/ios/CDVBarcodeScanner.mm" ios <source-file> at module.exports.source-file.install (/usr/local/lib/node_modules/cordova/node_modules/plugman/src/platforms/ios.js:44:48) […]

付款交易状态失败

我正在尝试使用PhoneGap插件在应用程序中购买,它是https://github.com/phonegap/phonegap-plugins/tree/master/iPhone/InAppPurchaseManager 但在沙箱testing我得到以下错误plugins.inAppPurchaseManager.updatedTransactionCallback.apply(plugins.inAppPurchaseManager,[“PaymentTransactionStateFailed”,0,“无法连接到iTunes Store”,“”,“”,“”]) 然后应用程序被击中…任何人都可以帮助我这个?