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.a
或libUAirship-iOS5-3.0.0.a
• 繁荣。它正在工作。
希望它会帮助其他一些想要解决这个问题的人。
【讨论】:
【参考方案5】:补充一下,我的问题是我在project
中添加了-ObjC
标志,它应该被添加到target
设置中。
另外,如果不能编译,还有另一个选项
-Wl,-force_load,<PathToYourLib>/libUAirship-4.0.0.a
也应该添加到目标中。填写你的库的真实路径而不是<PathToYourLib>
。
【讨论】:
以上是关于Urban Airship 在呼叫起飞时坠毁的主要内容,如果未能解决你的问题,请参考以下文章
使用 Phonegap for Ios 实现 Urban Airship 在注册时卡住了
用户单击 Urban Airship 通知时重新启动 android 应用程序
Urban Airship 与 Cordova iOS 投掷集成