为啥在安装了 cordova-mfp-push 插件后,我不能在真实的 ios 设备上运行 cordova 应用程序?
Posted
技术标签:
【中文标题】为啥在安装了 cordova-mfp-push 插件后,我不能在真实的 ios 设备上运行 cordova 应用程序?【英文标题】:Why can I not run a cordova app on a real ios device, after the installation of the cordova-mfp-push plugin?为什么在安装了 cordova-mfp-push 插件后,我不能在真实的 ios 设备上运行 cordova 应用程序? 【发布时间】:2016-08-18 12:45:43 【问题描述】:环境: MAC EL Capitan 10.11.6,xCode 版本 7.3.1,节点版本:v5.5.0,Cordova 版本:6.3.1,cordova-plugin-mfp-push 8.0.2016070407,MobileFirst Platform Foundation 命令行界面 (CLI):8.0。 0-2016070716
问题: 为什么在安装了 cordova-mfp-push 插件后,我不能在真实的 ios 设备上运行 cordova 应用程序? ios 应用程序在 ios 模拟器中运行。 谁有同样的问题,你是怎么发现的?
背景: 我有一个使用 mfp8 push 的 cordova 应用程序。
由于 Apple 认证过期问题 (https://developer.apple.com/support/certificates/expiration/),我不得不重新创建证书。
问题: 重新获得认证后,我尝试在我的设备上运行该应用程序。 但是我得到了认证错误。基于此,我尝试在我的 iOS 设备上运行其他 Cordova 应用程序,这是可能的。
基于此发现,我决定添加和删除 cordova 插件并检查此问题何时会出现。
发现: 我的发现是:当我添加了cordova-mfp-push插件后,xcode中就出现了认证问题。
我猜是因为cordova-mfp-push插件会自动开启“后台模式->远程通知”功能。
这里你可以看到ios应用的两种情况:
-
在将 cordova-mfp-push 添加到 cordova 应用程序之前:
在运行 xCode 的应用程序中...好的,找不到 MFP 推送库,但这很清楚原因。
在 xCode 中没有启用其他选项
-
将cordova-mfp-push 添加到cordova 应用程序后:
控制台输出
IBMs-MBP:MobileClientV3 tsuedbroecker$ cordova plugin add cordova-plugin-mfp-push --save
Fetching plugin "cordova-plugin-mfp-push" via npm
Installing "cordova-plugin-mfp-push" for android
Dependent plugin "cordova-plugin-mfp" already installed on android.
Installing "cordova-plugin-mfp-push" for ios
Dependent plugin "cordova-plugin-mfp" already installed on ios.
Saved plugin info for "cordova-plugin-mfp-push" to config.xml
IBMs-MBP:MobileClientV3 tsuedbroecker$ cordova prepare
Running command: /Users/tsuedbroecker/Documents/tsuedbro/MobileBluemix/dev/mfp8beta/CheckApp/MobileClientV3/hooks/after_prepare/010_add_platform_class.js /Users/tsuedbroecker/Documents/tsuedbro/MobileBluemix/dev/mfp8beta/CheckApp/MobileClientV3
add to body class: platform-android
add to body class: platform-ios
will push strings array "name":"lang","titles":["English (US)","English (UK)"],"values":["en-us","en-gb"]
android preferences file was successfully generated
ios settings bundle was successfully generated
IBMs-MBP:MobileClientV3 tsuedbroecker$ cordova plugin list
cordova-plugin-app-preferences 0.99.2 "AppPreferences"
cordova-plugin-camera 2.2.0 "Camera"
cordova-plugin-compat 1.0.0 "Compat"
cordova-plugin-console 1.0.3 "Console"
cordova-plugin-device 1.1.2 "Device"
cordova-plugin-dialogs 1.2.1 "Notification"
cordova-plugin-geolocation 2.2.0 "Geolocation"
cordova-plugin-globalization 1.0.3 "Globalization"
cordova-plugin-inappbrowser 1.4.0 "InAppBrowser"
cordova-plugin-mfp 8.0.2016080320 "IBM MobileFirst Platform Foundation"
cordova-plugin-mfp-push 8.0.2016070407 "IBM MobileFirst Platform Foundation - Push Notifications"
cordova-plugin-okhttp 2.0.0 "OkHttp"
cordova-plugin-spinner-dialog 1.3.1 "SpinnerDialog"
在设备上运行的问题:
插件在 xCode 中更改了配置:
【问题讨论】:
如果你再勾选这个选项? 当我把这个选项打勾时,还是一样的问题。 尝试在设备上运行时出现的“无法安装”问题看起来不是 cordova mfp 推送插件问题。您能否尝试在同一设备上运行本机 iOS 推送示例 - 使用相同的配置文件进行签名,您认为它有效吗?还是出现同样的错误信息?如果是这样,可能是证书没有更新的问题 所以,我确实下载了github.com/MobileFirst-Platform-Developer-Center/… 示例。设置认证。在 BX 上配置现有的 MFP8 服务器。示例在我的设备上运行,我可以从 MFP 服务器向我的设备发送推送。 ... swift 样本没问题 我复制了我的移动项目并重命名了科尔多瓦应用程序新捆绑 ID,创建新证书,添加到 mfp 服务器......仍然是同样的问题。只有在添加了 cordova-plugin-mfp-push 时才会出现问题。 【参考方案1】:我猜我的旧的科尔多瓦项目中有些东西损坏了。
感谢@Idan Adar 和@Vivin K 的反馈。
我执行了以下步骤以再次推送在 ios 设备上运行 cordova 应用程序。
我在 github.com/MobileFirst-Platform-Developer-Center/... 上使用 cordova 进行了示例。此示例有效。
我将所有需要的插件都添加到了正在工作的 cordova push 项目的副本中:
IBMs-MBP:MobileClientV4 tsuedbroecker$ ./add-cordova-plugins.sh --> 开始添加cordova插件 ****** 应用偏好 ********* 通过 npm 获取插件“cordova-plugin-app-preferences” 为 ios 安装“cordova-plugin-app-preferences” 未找到 app-settings.json:创建示例文件 将“cordova-plugin-app-preferences”的插件信息保存到 config.xml ****** 相机 ********* 通过 npm 获取插件“cordova-plugin-camera” 为 ios 安装“cordova-plugin-camera” 通过 npm 获取插件“cordova-plugin-compat” 为 ios 安装“cordova-plugin-compat” 将“cordova-plugin-camera”的插件信息保存到 config.xml ******兼容********* ios 上已安装插件“cordova-plugin-compat”。使其成为***。 将“cordova-plugin-compat”的插件信息保存到 config.xml ****** 安慰 ********* 通过 npm 获取插件“cordova-plugin-console” 为 ios 安装“cordova-plugin-console” 将“cordova-plugin-console”的插件信息保存到 config.xml ****** 设备 ********* ios 上已安装插件“cordova-plugin-device”。使其成为***。 将“cordova-plugin-device”的插件信息保存到 config.xml ****** 对话 ********* ios 上已安装插件“cordova-plugin-dialogs”。使其成为***。 将“cordova-plugin-dialogs”的插件信息保存到 config.xml ****** 地理位置 ********* 通过 npm 获取插件“cordova-plugin-geolocation” 为 ios 安装“cordova-plugin-geolocation” ios 上已经安装了依赖插件“cordova-plugin-compat”。 将“cordova-plugin-geolocation”的插件信息保存到 config.xml ****** 全球化 ********* ios 上已安装插件“cordova-plugin-globalization”。使其成为***。 将“cordova-plugin-globalization”的插件信息保存到 config.xml ****** inappbrowser ********* 通过 npm 获取插件“cordova-plugin-inappbrowser” 为 ios 安装“cordova-plugin-inappbrowser” 将“cordova-plugin-inappbrowser”的插件信息保存到 config.xml ******微调对话框********* 通过 npm 获取插件“cordova-plugin-spinner-dialog” 为 ios 安装“cordova-plugin-spinner-dialog” 将“cordova-plugin-spinner-dialog”的插件信息保存到 config.xml ****** 好的http ********* 通过 npm 获取插件“cordova-plugin-okhttp” 为 ios 安装“cordova-plugin-okhttp” 将“cordova-plugin-okhttp”的插件信息保存到 config.xml ****** 列出科尔多瓦插件 ********* cordova-plugin-app-preferences 0.99.2 “AppPreferences” 科尔多瓦插件相机 2.2.0 “相机” 科尔多瓦插件兼容 1.0.0 “兼容” 科尔多瓦插件控制台 1.0.3 “控制台” 科尔多瓦插件设备 1.1.2 “设备” 科尔多瓦插件对话框 1.2.1 “通知” 科尔多瓦插件地理定位 2.2.0 “地理定位” 科尔多瓦插件全球化 1.0.3 “全球化” cordova-plugin-inappbrowser 1.4.0 “InAppBrowser” cordova-plugin-mfp 8.0.2016080320“IBM MobileFirst 平台基础” cordova-plugin-mfp-push 8.0.2016070407“IBM MobileFirst Platform Foundation - 推送通知” 科尔多瓦插件okhttp 2.0.0“OkHttp” cordova-plugin-spinner-dialog 1.3.1 “SpinnerDialog” 科尔多瓦插件闪屏 3.2.2 “闪屏” 科尔多瓦插件白名单 1.2.2 “白名单” ****** 科尔多瓦准备 ********* ios 设置包已成功生成 --> 添加cordova插件完成!
我将旧项目中的 www 和 resource 文件夹复制到工作的 cordova 项目中。
我也将 Ionic 项目文件从我的旧项目复制到了正在工作的 cordova 项目中。
结果如下:
********* 步骤 ***********
-
步骤 -> 从 xCode 启动应用程序
-
步骤 -> 去配置推送
-
步骤 -> 检查推送支持
-
步骤->注册设备
-
步骤 -> 从 mfp 服务器发送推送到已注册的移动设备
【讨论】:
以上是关于为啥在安装了 cordova-mfp-push 插件后,我不能在真实的 ios 设备上运行 cordova 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章