2012-09-01 24 views
5

私はbox2dゲームを開発しています。試合で私はPushWooshプッシュ通知を使用しています。それは正常に動作しています(PushWooshサーバーからプッシュ通知を取得しています)が、プッシュ通知をタブするとゲームがクラッシュします。 [AppDelegate - 」:コンソールでタブプッシュ通知cocos2dゲームがクラッシュする

@interface AppDelegate:NSObject<UIApplicationDelegate,AdColonyDelegate,PushNotificationDelegate,UIAlertViewDelegate>{ 
     UIWindow   *window; 
     RootViewController *viewController; 
     PushNotificationManager *pushManager; 
    } 
    @property (nonatomic, retain) PushNotificationManager *pushManager; 
    @property (nonatomic, retain) UIWindow *window; 
    @property (nonatomic, retain) RootViewController *viewController; 
    @end 



    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 
     // Init the window 
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 


    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationType)(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

    //initialize push manager instance 
    pushManager = [[PushNotificationManager alloc] initWithApplicationCode:@"PushWoosh App_ID" appName:@"App_Name" ]; 
    pushManager.delegate = self; 
    [pushManager handlePushReceived:launchOptions]; 
    /*pushManager = [[PushNotificationManager alloc] initWithApplicationCode:@"FA7CF-665BF" navController:self.viewController appName:@"Cricket" ]; 
    pushManager.delegate = self; 
    [pushManager handlePushReceived:launchOptions];*/ 

    // Try to use CADisplayLink director 
    // if it fails (SDK < 3.1) use the default director 
    if(! [CCDirector setDirectorType:kCCDirectorTypeDisplayLink]) 
     [CCDirector setDirectorType:kCCDirectorTypeDefault]; 


    CCDirector *director = [CCDirector sharedDirector]; 

    // Init the View Controller 
    viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil]; 
    viewController.wantsFullScreenLayout = YES; 

    // 
    // Create the EAGLView manually 
    // 1. Create a RGB565 format. Alternative: RGBA8 
    // 2. depth format of 0 bit. Use 16 or 24 bit for 3d effects, like CCPageTurnTransition 
    // 
    // 
    EAGLView *glView = [EAGLView viewWithFrame:[window bounds] 
            pixelFormat:kEAGLColorFormatRGB565 // kEAGLColorFormatRGBA8 
            depthFormat:0      // GL_DEPTH_COMPONENT16_OES 
         ]; 

    // attach the openglView to the director 
    [director setOpenGLView:glView]; 

    // Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices 
    if (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) 
    { 
     if(! [director enableRetinaDisplay:YES]) 
      CCLOG(@"Retina Display Not supported"); 
    } 

    // 
    // VERY IMPORTANT: 
    // If the rotation is going to be controlled by a UIViewController 
    // then the device orientation should be "Portrait". 
    // 
    // IMPORTANT: 
    // By default, this template only supports Landscape orientations. 
    // Edit the RootViewController.m file to edit the supported orientations. 
    // 
#if GAME_AUTOROTATION == kGameAutorotationUIViewController 
    [director setDeviceOrientation:kCCDeviceOrientationPortrait]; 
#else 
    [director setDeviceOrientation:kCCDeviceOrientationLandscapeRight]; 
#endif 

    [director setAnimationInterval:1.0/60]; 
    [director setDisplayFPS:YES]; 


    // make the OpenGLView a child of the view controller 
    [viewController setView:glView]; 

    // make the View Controller a child of the main window 
    [window addSubview: viewController.view]; 

    [window makeKeyAndVisible]; 

    // Default texture format for PNG/BMP/TIFF/JPEG/GIF images 
    // It can be RGBA8888, RGBA4444, RGB5_A1, RGB565 
    // You can change anytime. 
    [CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888]; 


    // Removes the startup flicker 
    [self removeStartupFlicker];  


    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if(![defaults integerForKey:@"First"]) { 

     [[CCDirector sharedDirector]runWithScene:[MainMenu scene]]; 
    } 
    else { 

     [[CCDirector sharedDirector]runWithScene:[PlayAsGuestScene scene]]; 
    } 


    return YES; 
} 

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ 

     [pushManager handlePushReceived:userInfo]; 
} 
    - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken{ 
    [pushManager handlePushRegistration:deviceToken]; 

    //you might want to send it to your backend if you use remote integration 
    NSString *token = [pushManager getPushToken]; 
} 

私はこのエラーを取得しています:キャッチされない例外により 'NSInvalidArgumentException'、理由にアプリを終了 * Appdelegateではこの

-In Appdelegate.hのように実装しますonPushAccepted:]:インスタンスに送信された認識できないセレクタ0xf50d290 '

どうしてですか?

+1

ああ、一般的に、クラッシュするとコードが増えますか?例外ブレークポイントを設定しようとしましたか?もっと私たちに情報を与えてください... – mientus

答えて

1

最後に私はそれを得ました。私は に変更しました

-(void)applicationDidFinishLaunching:(UIApplication*)application{ 

    pushManager = [[PushNotificationManager alloc] initWithApplicationCode:@"PushWoosh App_ID" appName:@"App_Name" ]; 
    pushManager.delegate = self; 

} 

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ 

     //write own code 
} 

私のアプリケーションはクラッシュすることなく動作しています。

関連する問題