0

W3i Advertiser SDK を iOS アプリに統合していますが、次の行でアプリがクラッシュしています。

 [[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 をダウンロード ここに画像の説明を入力

ステップ 2 : W3iAdvertiserSdk -3.2.0 フォルダーをプロジェクトのファイル フォルダーにドラッグします。 ここに画像の説明を入力

Step3次のフレームワークへのリンクがまだ存在しない場合は追加します。

  • AdSupport.framework
  • UIKit.framework
  • Foundation.framework
  • CoreGraphics.framework

Step4: 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の機能を使用してアプリをw3iに接続し、w3iを介してアプリを宣伝する方法を教えてください。

4

2 に答える 2

2

この手順も実行する必要があります。

  1. -ObjC をターゲットのビルド設定のその他のリンカー フラグに追加します。これにより、「オプション 1」がクラッシュしなくなります。
于 2013-01-16T11:11:07.527 に答える
0

アプリを w3i に接続するには、次の 2 つの方法があります。

オプション 1: W3i-iOS-SDK を統合し、アプリケーションの開始時にそのメソッド「connectWithAppId」を呼び出します。

オプション 2: アプリケーションの開始時に W3i "appWasRun" API を呼び出す

最初のオプションはうまくいきませんでしたが、オプション 2 は非常に簡単で、うまく機能しています。

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 によって生成) および少なくとも 1 つの識別子 (すべてのパラメーターは 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 に答える