2011-02-27 12 views
6

को कार्यान्वित करने के लिए मुझे एडीबीनर व्यू और उसके प्रतिनिधि प्रोटोकॉल को लागू करने में समस्या हो रही है।AdBannerview और ADBannerview प्रतिनिधि

//add iAds 
ADBannerView *adView = [[ADBannerView alloc] initWithFrame: CGRectMake(0, 318, 320, 50)]; 
adView.requiredContentSizeIdentifiers = [NSSet setWithObjects: ADBannerContentSizeIdentifierPortrait, ADBannerContentSizeIdentifierLandscape, nil]; 
adView.delegate = self; 
//adView.delegate = ADBannerViewDelegate; 
[self.view addSubview: adView]; 

तो मैं निम्नलिखित मीटर

// 
// ADBannerViewDelegate.m 
// 

#import "ADBannerViewDelegate.h" 

@implementation ADBannerViewDelegate 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ 
    NSLog(@"bannerview did not receive any banner due to %@", error);} 

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{NSLog(@"bannerview was selected");} 

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{return willLeave;} 

- (void)bannerViewDidLoadAd:(ADBannerView *)banner {NSLog(@"banner was loaded");} 

@end 
साथ ADBannerViewDelegate के लिए एक श्रेणी का निर्माण,:

मैं मेरे विचार कक्षा में निम्नलिखित कोड लागू किया है (यह भी देखने ADBannerViewDelegate प्रोटोकॉल के अनुरूप बनाया)

बैनर अंत में प्रस्तुत कर रहे हैं, लेकिन सांत्वना त्रुटियों के निम्नलिखित प्रकार फेंकने रखें:

2011-02-27 15:00:54.108 app[31639:207] ADBannerView: Unhandled error (no delegate or delegate does not implement didFailToReceiveAdWithError:): Error Domain=ADErrorDomain Code=5 "The operation couldn’t be completed. Banner view is visible but does not have content" UserInfo=0x6356a40 {ADInternalErrorCode=5, NSLocalizedFailureReason=Banner view is visible but does not have content} 

और प्रतिनिधि कार्य कुछ भी नहीं कर रहे हैं, इसलिए कोई भी एनएसएलओजी नहीं है। जाहिर है त्रुटियों को पकड़ नहीं।

मैं स्टंप हो गया हूं। मुझे लगता है कि दृश्य और प्रतिनिधि में एडबैनर व्यू कॉल के लिंक में मुझे कुछ याद आ रहा है। सुनिश्चित नहीं है कि यह कैसे करें या क्या गलत है।

कोई मदद? अग्रिम में धन्यवाद।

जेसन

उत्तर

9

कारण है कि आप AdBannerView बताया है कि आप अपने प्रतिनिधि हैं, लेकिन आप यह कभी नहीं में डाल अपने कार्यान्वयन फ़ाइल। आपका क्रियान्वयन फ़ाइल (@implmentation के साथ लाइन नोटिस) इस तरह दिखना चाहिए:

// 
// ADBannerViewDelegate.m 
// 

#import "ADBannerViewDelegate.h" 

@implementation ADBannerViewDelegate<ADBannerViewDelegate> 

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{ 
    NSLog(@"bannerview did not receive any banner due to %@", error);} 

- (void)bannerViewActionDidFinish:(ADBannerView *)banner{NSLog(@"bannerview was selected");} 

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave{return willLeave;} 

- (void)bannerViewDidLoadAd:(ADBannerView *)banner {NSLog(@"banner was loaded");} 

@end 

और यह भी आप अपने वर्ग ADBannerViewDelegate का नाम नहीं चाहिए। आपकी कक्षा ADBannerView पर एक प्रतिनिधि (इसका जवाब दें) होना चाहिए लेकिन इसके नाम पर नहीं रखा जाना चाहिए।

+0

इसे विधि के लिए नोट किया जाना चाहिए: bannerViewActionShouldBegin। तर्क कस्टम हो सकता है, लेकिन आमतौर पर हाँ वापस करने के लिए बेहतर है। ऐप के भीतर कई विज्ञापन दिए गए हैं (इसलिए WillLeave अक्सर नहीं होगा), लेकिन इस मान के आधार पर लौटने से विज्ञापन को पूरी तरह से सेवा करने से रोक दिया जाएगा (जब नहीं) और इसलिए AdBannerViewDelegate प्रोटोकॉल संदर्भ के अनुसार कमाई योग्य राजस्व कम करें (https://developer.apple.com/library/ios/documentation/UserExperience/Reference/ADBannerViewDelegate_Ref/Reference/Reference.html#//apple_ref/occ/intfm/ADBannerViewDelegate/bannerViewActionShouldBegin:willLeaveApplication :)। – Shaun

+0

मैं थोड़ा उलझन में हूं, इंटरफ़ेस नहीं है जिसे कार्यान्वयन के लिए प्रोटोकॉल के अनुरूप होने की आवश्यकता नहीं है। मैं परीक्षण परियोजना में यह कोशिश कर रहा था जब मैंने कार्यान्वयन में ADViewBannerDelete लिखा, xcode इस त्रुटि को फेंक दिया। @ कार्यान्वयन घोषणा प्रोटोकॉल योग्य नहीं हो सकती – Alix

4

मैं इस ट्यूटोरियल का उपयोग कर मेरे एप्लिकेशन में सफलतापूर्वक एकीकृत iAds:
http://www.raywenderlich.com/1371/how-to-integrate-iad-into-your-iphone-app
आपकी भी मदद कर सकता है।

2

आप ADBannerViewDelegate नामक कक्षा को लागू करने का प्रयास नहीं करते हैं, तो आप उन विधियों को अपनी दृश्य कक्षा के कार्यान्वयन में डालते हैं।

(आप वास्तव में नामित किया गया है, तो आपके विचार वर्ग "ADBannerViewDelegate", नहीं है। यह भ्रामक है।)

+0

thx। जो मैं करने की कोशिश कर रहा था वह एक सामान्य वर्ग बनाना है जो सभी कार्यों के साथ एक प्रतिनिधि के रूप में कार्य करता है। इसका कारण यह है कि मेरे पास अलग-अलग विचारों का एक समूह है जो एडबैनर को जिस तरह से दिखाता है उसे कॉल करता है और उसी कोड के साथ सभी विचार नियंत्रकों को कूड़े नहीं चाहता था। – jason

+0

फिर आपको 'adView.delegate = self;' असाइन नहीं करना चाहिए, आपको अपनी जेनेरिक क्लास का एक उदाहरण बनाना चाहिए और इसे प्रतिनिधि के रूप में असाइन करना चाहिए। आपके विचार को उस मामले में 'AdBannerViewDelegate' प्रोटोकॉल से भ्रमित करने की आवश्यकता नहीं है। – Anomie

1

मेरे लिए यह लक्ष्य और डिवाइस था, मैं इसे 4.3 सिम्युलेटर पर भाग गया और मेरी iPad 2 लेकिन एप्लिकेशन, iphone 5.1 के लिए था जब मैं लक्ष्य बदल सभी कामयाबी से

+0

+1 आईपैड सिम्युलेटर में आईफोन ऐप चलाना मैंने किया है FailToReceiveAdWithError तुरंत ADBannerView प्रतिनिधि को सेट करने पर, और कभी भी कोई अन्य प्रतिनिधि कॉल नहीं। इसे आईफोन सिम्युलेटर (या ऐप लक्ष्य को सार्वभौमिक में बदलना) पर चलाना प्रतिनिधि को केवल एडीबीनर व्यू को सबव्यूव के रूप में जोड़ने के बाद बुलाया गया, और इसके बाद हर 30 सेकंड में प्रतिनिधि कॉल करें। –

संबंधित मुद्दे