Phonegap 推送插件:构建 iOS 模板错误

Posted

技术标签:

【中文标题】Phonegap 推送插件:构建 iOS 模板错误【英文标题】:Phonegap push plugin: builgind iOS template error 【发布时间】:2017-12-27 12:13:46 【问题描述】:

我正在我的应用上使用 FCM 开发推送通知功能,适用于 androidios

After I successuflly managed the push notifications on Android devices,我试图在 iOS 上做同样的事情。

所以,我开始创建模板,就像我为 Android 制作的一样。

但是,创建模板时出现错误:

开始为 ios 构建

正在上传 iOS 密钥...

完成

正在上传应用模板...

完成

构建状态:待定(13 次尝试)

构建状态:错误(“plugman install --platform ios --project /tmp/gimlet/2719563/project --plugin phonegap-plugin-push@1.9.0”:获取插件“phonegap-plugin-通过 npm 推送@1.9.0"

在“1.9.0”为 ios 安装“phonegap-plugin-push”

无法安装“phonegap-plugin-push”:未定义 不明确的 )

正在删除 iOS 密钥...

完成

正在删除应用程序模板...

完成

错误:构建状态:错误(“plugman install --platform ios --project /tmp/gimlet/2719563/project --plugin phonegap-plugin-push@1.9.0”:获取插件“phonegap- plugin-push@1.9.0" 通过 npm

在“1.9.0”为 ios 安装“phonegap-plugin-push”

无法安装“phonegap-plugin-push”:未定义 不明确的 )

这是我的 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 name="DisallowOverscroll" value="true" />
  <preference name="StatusBarOverlaysWebView" value="false" />
  <preference name="StatusBarBackgroundColor" value="#000000" />
  <preference name="android-minSdkVersion" value="15" />
  <preference name="android-targetSdkVersion" value="22" />
  <plugin name="cordova-plugin-geolocation" />
  <plugin name="cordova-plugin-splashscreen" onload="true" />
  <plugin name="cordova-plugin-whitelist" />
  <plugin name="cordova-plugin-ios-longpress-fix" />
  <plugin name="cordova-plugin-statusbar" onload="true" />

  <plugin name="phonegap-plugin-push" spec="1.9.0"/>

  <access origin="*" />
</widget>

config.xml 文件在项目 APP.mobile 中(不在 APP.shared 中)。我不明白为什么我可以为 Android 构建原生模板(而且它的工作原理很吸引人)而在 iOS 中却不行。

更新:这里总结了所有步骤:https://programmingistheway.wordpress.com/2017/07/19/devextremephonegap-how-to-manage-push-notifications-with-fcm/

【问题讨论】:

请使用cordova平台检查您的ios版本。可能是你的ios版本不支持插件需要ios版本。 解决了在 config.xml 中添加“senderID”参数的问题。我注意到它在这里对 Android 没用,但对 iOS 来说是强制性的。 是的,你也必须在 ios build 中写入 senderId。否则会产生错误。 【参考方案1】:

要使用 FCM,您应该使用插件的 v2.x.x 版本

最新发布的版本是v2.0.0-rc5,试试这个,或者甚至使用cordova plugin add https://github.com/phonegap/phonegap-plugin-push/从github安装

在您的 config.xml 中,您必须像这样添加 google-services json 和 plist 文件

<platform name="android">
    <resource-file src="google-services.json" target="google-services.json" />
</platform>
<platform name="ios">
    <resource-file src="GoogleService-Info.plist" />
</platform>

在您的其他问题中,您似乎正在使用 github url,不确定您为什么回到 1.9.0

【讨论】:

我回到了 1.9.0,因为在最新版本中,它没有创建模板,给我一个错误。 DevExpress 我建议我使用 1.9.0,然后我就可以创建模板了。 如果你想在 iOS 上使用 FCM,你必须使用 v2.xx,在 Android 中,谷歌使 FCM 和 GCM 以某种方式兼容,因此它也适用于 1.9.0,但这不会在 iOS 上发生.您必须将 cli 设置为 7.0.1 ~ 和 ^ 是 semver 字符,~ 表示安装最后一个补丁版本 (1.10.x),^ 表示安装最后一个次要版本 (1.x.x),更多信息请参见 ***.com/questions/44547114/… 我还在度假,但刚刚看到这篇关于Phonegap build support 7.0.1 和push plugin 2.0.0 blog.phonegap.com/…的博文,也许对你有帮助 有一个注释但是 PGB 上的 iOS 4.4.0 (cli-7.0.1) 现在已经针对 CB-13112 进行了修补,所以现在应该可以使用 cli-7.0.1 推送 2.0.0 .

以上是关于Phonegap 推送插件:构建 iOS 模板错误的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上单击时,Phonegap 插件推送通知保留在托盘中

构建后phonegap推送插件不起作用

Phonegap 构建推送通知插件问题

PhoneGap 推送插件不注册 iOS 8 设备

在 iOS 上使用 phonegap 构建推送通知,没有 3rd 方服务

Icenium/phonegap ios 推送通知和 php 处理