在 MyUnicity iOS 项目中尝试同时使用 mobilefirst 平台 SDK 和 IBM Bluemix 通知 SDK 时,我们遇到了一些问题。MFP 和 IMFCore 库之间存在许多重复符号,并且我们的项目构建在链接阶段失败(请参见下面的示例:我们总共得到“121 个重复符号用于架构 arm64”)。iOS 上的 Bluemix 推送通知需要 IMFCore 和 IMFPush 功能:
重复符号 _OBJC_IVAR_$_WLAFQueryStringPair._field 在:...重复符号 _WLAFQueryStringPairsFromDictionary 在:...重复符号 _OBJC_CLASS_$_WLDeviceAuthManager 在:... ... ld:架构 arm64 的 121 个重复符号 clang:错误:链接器命令失败并退出代码 1(使用 -v 查看调用)
我们已经看到移动优先平台 SDK 和 IBM 本地化 SDK 发生了类似的情况(参见:https ://developer.ibm.com/answers/questions/176115/ibmlocation-ios-sdk-worklight-api-duplicate-symbol .html)。在这种情况下,答案是使用来自移动优先平台的推送通知,但在我们的例子中,这是不可能的,因为推送通知服务由位于移动优先平台之外的 MACM 使用。
有一些一般性的建议可以解决这个问题,但这些解决方案看起来更像是 hack,或者涉及可能难以在其他开发环境中复制的步骤:
1)从静态库中手动删除符号
2)使用命名空间依赖项(涉及访问相关库)
3) 其他链接选项的使用
还有一个替代解决方案:在 MACM 中将 xtify 用于推送通知,而不是使用 bluemix 推送通知(MACM 支持 Bluemix Push 或 Xtify 作为推送通知解决方案)。
这里最好的做法是什么?
谢谢