插件冲突错误:Google plus 和 Push 插件
Posted
技术标签:
【中文标题】插件冲突错误:Google plus 和 Push 插件【英文标题】:Plugin conflict error : Google plus and Push plugin 【发布时间】:2018-11-01 02:12:51 【问题描述】:我需要同时使用 google plus 和推送通知,但 Phonegap Build 出现错误:
请通过更新版本来修复版本冲突 google-services 插件(有关最新版本的信息是 可在 bintray.com/android/...) 或更新版本 com.google.android.gms 到 11.6.2。
index.html:
<!DOCTYPE html>
<html>
<head>
<title>Device Ready Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" src="push.js"></script>
<script>
// Wait for device API libraries to load
//
function onLoad()
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady()
// Now safe to use device APIs
var push = PushNotification.init(
"android":
"senderID": "xxxxxxxxxx"
,
);
push.on('registration', function(data)
alert('registration event: ' + data.registrationId);
console.log('registration event: ' + data.registrationId);
var oldRegId = localStorage.getItem('registrationId');
if (oldRegId !== data.registrationId)
// Save new registration ID
localStorage.setItem('registrationId', data.registrationId);
// Post registrationId to your app server as the value has changed
var parentElement = document.getElementById('registration');
var listeningElement = parentElement.querySelector('.waiting');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
);
</script>
</head>
<body onload="onLoad()">
</body>
</html>
config.xml:
<widget id="com.phonegap.notificationtest1" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
<name>notificationtest1</name>
<description>
notificationtest1
</description>
<author email="support@phonegap.com" href="http://phonegap.com">
sqlchild
</author>
<preference name="android-minSdkVersion" value="17" />
<preference name='phonegap-version' value='cli-8.0.0' />
<preference name='pgb-builder-version' value='2' />
<plugin name="phonegap-plugin-push" spec="2.1.3">
<param name="SENDER_ID" value="xxxxxxxxxxxx" />
</plugin>
<plugin name="cordova-plugin-googleplus" source="npm" spec="5.3.0"></plugin>
<platform name="android">
<resource-file src="app/google-services.json" target="app/google-services.json" />
</platform>
<content src="index.html" />
【问题讨论】:
@DaveAlden :嘿,戴夫,你能告诉我如何分叉插件并使用它 【参考方案1】:cordova-plugin-googleplus
currently pins v11.8.0 的 Play 服务库 (com.google.android.gms
)。
Firebase 库的phonegap-plugin-push
currently pins v11.6.2 反过来固定播放服务库的 v11.6.2。
因此,Play Services 库的冲突版本会导致您的构建错误。
phonegap-plugin-push
现在也是 depends 上的 cordova-support-google-services 到 pull in v3.2.0 of the Google Services plugin,这也间接引用了 Play Services 库。
TL;DR:您需要让cordova-plugin-googleplus
指定与phonegap-plugin-push
相同的播放服务库版本。
如果您在本地构建,您可以使用cordova-android-play-services-gradle-release 来执行此操作:
cordova plugin add cordova-android-play-services-gradle-release --variable PLAY_SERVICES_VERSION=11.6.2
但是,您正在使用 doesn't support the execution of hooks scripts 所依赖的 Phonegap Build 进行构建。
因此,您最好的解决方案可能是 fork cordova-plugin-googleplus
并将 Play Services 版本设置为 plugin.xml
中的 11.6.2
,然后在您的构建中使用该 fork。
【讨论】:
好的,戴夫,谢谢你会做的,然后回来找你 :) 让你知道 能否也给我提供本地构建的步骤 我已经分叉了插件,但现在我如何在我的 config.xml 中使用它?我需要在 npm 上上传吗?>Do I need to upload it on npm?
不直接在 config.xml 中从 github 引用它:<plugin name="cordova-plugin-googleplus" source="git" spec="https://github.com/yourGithubUsername/cordova-plugin-googleplus"></plugin>
>Can you also provide me with the steps to build locally
。见https://cordova.apache.org/docs/en/latest/guide/cli/index.html
和https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html
以上是关于插件冲突错误:Google plus 和 Push 插件的主要内容,如果未能解决你的问题,请参考以下文章
Firebase FCM 与 google plus cordova 插件冲突 - IOS
Google Plus PHP API 与其他 API 文件冲突