0

我在 iOS 应用程序中集成 W3i Advertiser SDK,但应用程序在以下行崩溃。

 [[W3iAdvertiserSdk sharedConnector] connectWithAppID:W3I_APP_ID];

这是例外:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI W3iPublisherJSONRepresentation]: unrecognized selector sent to instance 0xa1d7520'
*** First throw call stack:
(0x29d3012 0x23fae7e 0x2a5e4bd 0x29c2bbc 0x29c294e 0x16af7a 0x3e25 0xcd57b7 0xcd5da7 0xcd6fab 0xce8315 0xce924b 0xcdacf8 0x2903df9 0x2903ad0 0x2948bf5 0x2948962 0x2979bb6 0x2978f44 0x2978e1b 0xcd67da 0xcd865c 0x2d08d 0x26c5)
libc++abi.dylib: terminate called throwing an exception

我搜索了很多,但除了 w3i 的官方指南外,没有与 w3i 集成相关的网络信息和它的使用。 https://associate.w3i.com/integration/W3i_iOS_Advertiser_SDK_Integration_Guide1.htm

https://associate.w3i.com/integration/index.html

以下是我正在遵循的步骤:

Step1 : 从 W3i 下载 SDK 在此处输入图像描述

Step2 : 将 W3iAdvertiserSdk-3.2.0 文件夹拖入项目文件夹 在此处输入图像描述

第3 步添加指向以下框架的链接(如果尚不存在):

  • AdSupport.framework
  • UIKit.framework
  • 基础框架
  • CoreGraphics.framework

第 4步:添加到您的 AppDelegate.m 文件中,#import "W3iAdvertiserSdk.h"

如果我在上面的集成之后运行应用程序,那么应用程序运行良好,没有任何错误,但是当我调用 W3iAdvertiser 的方法来连接应用程序时,它会抛出我已经在上面发布的异常。

// add this line to application's didFinishLaunchingWithOptions method
[[W3iAdvertiserSdk sharedConnector] connectWithAppID:W3I_APP_ID];  //appId created at w3i

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryI W3iPublisherJSONRepresentation]: unrecognized selector sent to instance 0xa1d7520'
*** First throw call stack:
(0x29d3012 0x23fae7e 0x2a5e4bd 0x29c2bbc 0x29c294e 0x16af7a 0x3e25 0xcd57b7 0xcd5da7 0xcd6fab 0xce8315 0xce924b 0xcdacf8 0x2903df9 0x2903ad0 0x2948bf5 0x2948962 0x2979bb6 0x2978f44 0x2978e1b 0xcd67da 0xcd865c 0x2d08d 0x26c5)
libc++abi.dylib: terminate called throwing an exception

谁能指导我哪里出错了,如何使用 SDK 的功能将 App 与 w3i 连接以通过 w3i 宣传我们的应用程序?

4

2 回答 2

2

您还需要执行此步骤:

  1. 在目标的构建设置中将 -ObjC 添加到其他链接器标志。这将允许“选项 1”不会崩溃。
于 2013-01-16T11:11:07.527 回答
0

有两种方法可以将应用程序与 w3i 连接:

方案1:集成W3i-iOS-SDK,在应用启动时调用其方法“connectWithAppId”。

选项 2:在应用程序启动时调用 W3i “appWasRun” API

第一个选项对我不起作用,但 Option2 非常简单并且工作正常。

这是API的格式及其参数:

http://api.w3i.com/PublicServices/MobileTrackingApiRestV1.svc/AppWasRun?AppId={APPID}&clientIp={CLIENTIP}&iOSIDFA={advertisingIdentifier}&iOSUDID={IOSUDID}&iOSOpenUDID={IOSOpenUDID}&iOSMD5WLANMAC={iOSMD5WLANMAC}&iOSSha1HashedMac={iOSSha1HashedMac}

请求类型:GET

必需参数:APPID(由 W3I 生成)和至少一个标识符(所有参数均由 W3i 首选)

我只使用了 OpenUDID,它运行良好。

http://api.w3i.com/PublicServices/MobileTrackingApiRestV1.svc/AppWasRun?AppId=W3i_APP_ID&iOSOpenUDID=OPEN_UDID

有关更多信息,请查看以下链接。

https://sites.google.com/site/w3ideveloperscom/ios/iOSAFPP/advapi

https://associate.w3i.com/integration/Device_Identifiers.htm

希望它会在未来对其他人有所帮助:)

于 2012-12-13T17:00:46.307 回答