2017-02-23 20 views
7

に私は主催者にバックトレースを見ることができるオーガナイザーFacebookのインタースティシャル広告クラッシュMopubプラグインは、ユニティ

にクラッシュを確認したときにFacebookのインタースティシャル広告はMopubプラグインでクラッシュ実現しました。

このクラッシュを編集して修正するには、真のファイルを探したいと思います。

これは、バックトレースです: Backtrace

そして、これは私が

ファイル使用方法です:AdSystem.cs

try { 
    MoPub.showInterstitialAd(adUnit.key1); 
} 
catch(Exception e) { 
} 

そして、これがMopub https://github.com/mopub/mopub-ios-sdk/tree/master/AdNetworkSupport/Facebook

のためのFacebookの間質アダプターです

ファイル:FacebookInterstitialCustomEvent.m

あなたがプリフェッチ間質べきMopubの公式サイトから
// 
// FacebookInterstitialCustomEvent.m 
// MoPub 
// 
// Copyright (c) 2014 MoPub. All rights reserved. 
// 

#import <FBAudienceNetwork/FBAudienceNetwork.h> 
#import "FacebookInterstitialCustomEvent.h" 

#import "MPInstanceProvider.h" 
#import "MPLogging.h" 

@interface MPInstanceProvider (FacebookInterstitials) 

- (FBInterstitialAd *)buildFBInterstitialAdWithPlacementID:(NSString *)placementID 
                delegate:(id<FBInterstitialAdDelegate>)delegate; 

@end 

@implementation MPInstanceProvider (FacebookInterstitials) 

- (FBInterstitialAd *)buildFBInterstitialAdWithPlacementID:(NSString *)placementID 
                delegate:(id<FBInterstitialAdDelegate>)delegate 
{ 
    FBInterstitialAd *interstitialAd = [[FBInterstitialAd alloc] initWithPlacementID:placementID]; 
    interstitialAd.delegate = delegate; 
    return interstitialAd; 
} 

@end 

@interface FacebookInterstitialCustomEvent() <FBInterstitialAdDelegate> 

@property (nonatomic, strong) FBInterstitialAd *fbInterstitialAd; 

@end 

@implementation FacebookInterstitialCustomEvent 

- (void)requestInterstitialWithCustomEventInfo:(NSDictionary *)info 
{ 
    if (![info objectForKey:@"placement_id"]) { 
     MPLogError(@"Placement ID is required for Facebook interstitial ad"); 
     [self.delegate interstitialCustomEvent:self didFailToLoadAdWithError:nil]; 
     return; 
    } 

    MPLogInfo(@"Requesting Facebook interstitial ad"); 

    self.fbInterstitialAd = 
    [[MPInstanceProvider sharedProvider] buildFBInterstitialAdWithPlacementID:[info objectForKey:@"placement_id"] 
                    delegate:self]; 

    [self.fbInterstitialAd loadAd]; 
} 

- (void)showInterstitialFromRootViewController:(UIViewController *)controller { 
    if (!self.fbInterstitialAd || !self.fbInterstitialAd.isAdValid) { 
     MPLogError(@"Facebook interstitial ad was not loaded"); 
     [self.delegate interstitialCustomEventDidExpire:self]; 
    } else { 
     MPLogInfo(@"Facebook interstitial ad will be presented"); 
     [self.delegate interstitialCustomEventWillAppear:self]; 
     [self.fbInterstitialAd showAdFromRootViewController:controller]; 
     MPLogInfo(@"Facebook interstitial ad was presented"); 
     [self.delegate interstitialCustomEventDidAppear:self]; 
    } 
} 

- (void)dealloc 
{ 
    _fbInterstitialAd.delegate = nil; 
} 

#pragma mark FBInterstitialAdDelegate methods 

- (void)interstitialAdDidLoad:(FBInterstitialAd *)interstitialAd 
{ 
    MPLogInfo(@"Facebook intersitital ad was loaded. Can present now"); 
    [self.delegate interstitialCustomEvent:self didLoadAd:interstitialAd]; 
} 

- (void)interstitialAd:(FBInterstitialAd *)interstitialAd didFailWithError:(NSError *)error 
{ 
    MPLogInfo(@"Facebook intersitital ad failed to load with error: %@", error.description); 
    [self.delegate interstitialCustomEvent:self didFailToLoadAdWithError:nil]; 
} 

- (void)interstitialAdDidClick:(FBInterstitialAd *)interstitialAd 
{ 
    MPLogInfo(@"Facebook interstitial ad was clicked"); 
    [self.delegate interstitialCustomEventDidReceiveTapEvent:self]; 
} 

- (void)interstitialAdDidClose:(FBInterstitialAd *)interstitialAd 
{ 
    MPLogInfo(@"Facebook interstitial ad was closed"); 
    [self.delegate interstitialCustomEventDidDisappear:self]; 
} 

- (void)interstitialAdWillClose:(FBInterstitialAd *)interstitialAd 
{ 
    MPLogInfo(@"Facebook interstitial ad will close"); 
    [self.delegate interstitialCustomEventWillDisappear:self]; 
} 

@end 

答えて

0

:この場合

MoPub.requestInterstitialAd(interstitialAdUnit); 

、その後

MoPub.requestInterstitialAd(adUnit.key1); 

は間質を表示:

MoPub.showInterstitialAd (interstitialAdUnit); 
あなたのケースでは

、そう

MoPub.showInterstitialAd (adUnit.key1); 

、あなたのファイルAdSystem.csは、これらのコールバックハンドラは、あまりにも詳細については

void onInterstitialLoaded (string adUnitId) 
void onInterstitialFailed (string errorMsg) 
void onInterstitialDismissed (string adUnitId) 
void interstitialDidExpire (string adUnitId) 
void onInterstitialShown (string adUnitId) 
void onInterstitialClicked (string adUnitId) 

をお手伝いします

try { 
    MoPub.requestInterstitialAd(adUnit.key1); 
    MoPub.showInterstitialAd(adUnit.key1); 
} 
catch(Exception e) { 
} 

する必要があります見てくださいMopub's Official Documentation

+0

ご返信ありがとうございます。私は既にインタースティシャルをプリフェッチしています。私のコードは完璧に動作していますが、デバイスのいくつかがクラッシュします。私はクラッシュを修正したいだけです –

+0

2つまたは3つのデバイス名の例を提供できますか? –

+0

Iphone 6s 10.2 Iphone SE 10.2 Iphone 5s 10.2.1 Iphone 6 10.2 Facebookの広告の一部がクラッシュすると思います。 try catchを使ってFacebookInterstitialCustomEvent.mファイルを修正すると、このクラッシュを取り除くことができますか? –

関連する問題