Urban Airship 在呼叫起飞时坠毁

Posted

技术标签:

【中文标题】Urban Airship 在呼叫起飞时坠毁【英文标题】:Urban Airship crashes when calling takeoff 【发布时间】:2013-09-24 16:20:33 【问题描述】:

使用 Xcode 5.0 升级到 UrbanAirship 3.0.0,调用此代码时出现错误:

[UAirship takeOff:config];

错误是

+[NSJSONSerialization stringWithObject:]: unrecognized selector sent to class 0x3b2ca9fc
2013-09-19 15:02:31.981 [178:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '+[NSJSONSerialization stringWithObject:]: unrecognized selector sent to class 0x3b2ca9fc'

AirshipConfig.plist 中将键“inProduction”设置为“YES”时,这似乎没有出现,这在调用 takeOff: 填充 UAirShip 实例时是有意义的。 这似乎是由于类别NSJSONSerialization+UAAdditions

这有什么帮助吗? 谢谢

【问题讨论】:

'config' 的值/类型是什么? 我正在设置默认配置UAConfig *config = [UAConfig defaultConfig]; 同样的问题,你知道吗? 检查config的值? 刚刚发布了我的解决方案,似乎工作正常。如果您对我的做法有任何疑问,请询问我。 【参考方案1】:

要解决此问题,您必须在项目构建设置中的“其他链接器标志”中包含“-ObjC”标志。

UAirship 库 3.x 现在使用 Objective-C 类别,因此必须设置此标志以避免运行时异常。

可以在此处找到有关此问题的详细信息:

https://developer.apple.com/library/mac/qa/qa1490/_index.html

更新了文档:

http://docs.urbanairship.com/build/ios.html#build-settings http://docs.urbanairship.com/topic_guides/ios_migration.html#linker-flags

【讨论】:

感谢您的帮助! 太棒了,在 XCode 6 中升级到 5.0.3,前一天运行良好,然后下一次崩溃了......很奇怪,但添加链接器标志有效!【参考方案2】:

来源:https://github.com/urbanairship/ios-library

【讨论】:

我正在使用源代码并仔细按照此处找到的 UrbanAirship 的教程docs.urbanairship.com/build/ios.html 但这并没有解决问题【参考方案3】:

您必须同时包含这两个库:

libUAirship-3.0.0.a libUAirship-iOS5-3.0.0.a

您必须为各自的 iOS 使用任一库

【讨论】:

实际上,我只添加了库 libUAirship-iOS5-3.0.0 我正在使用 iOS 部署目标运行我的应用程序 - iOS 5.0 和 Base SDK 是 iOS 7.0【参考方案4】:

在查看了不同的解决方案后,事实证明这可以解决问题:

• 直接从https://github.com/urbanairship/ios-library 下载源代码到您的 App 文件夹中(不要使用他们网站上提供的 .zip)

• 在您的项目中拖放 Airship 文件夹(不要使用 AirshipLib)

不要链接任何libUAirship-3.0.0.alibUAirship-iOS5-3.0.0.a

• 繁荣。它正在工作。

希望它会帮助其他一些想要解决这个问题的人。

【讨论】:

【参考方案5】:

补充一下,我的问题是我在project 中添加了-ObjC 标志,它应该被添加到target 设置中。

另外,如果不能编译,还有另一个选项

-Wl,-force_load,<PathToYourLib>/libUAirship-4.0.0.a    

也应该添加到目标中。填写你的库的真实路径而不是&lt;PathToYourLib&gt;

【讨论】:

以上是关于Urban Airship 在呼叫起飞时坠毁的主要内容,如果未能解决你的问题,请参考以下文章

使用 Phonegap for Ios 实现 Urban Airship 在注册时卡住了

用户单击 Urban Airship 通知时重新启动 android 应用程序

Urban Airship 与 Cordova iOS 投掷集成

使用 Urban Airship 的推送通知在第一次启动时返回 apID 为 null

无意图接收器设置 Urban AirShip

如何在 iPhone 中实现 Urban Airship 的推送通知?