是否可以使用Xcode中的adhoc配置文件调试我的应用程序?

时间:2017-01-11 03:28:38

标签: ios xcode push-notification

如您所知,我将签名调试配置文件设置为Adhoc配置文件。

如果我将我的应用程序运行到iPhone,那么我可以使用我的iPhone接收我的后台远程推送通知。(我的后台使用的是分发配置文件,所以我必须使用adhoc或发行版配置文件)。

但每次我将应用程序(使用Adhoc配置文件)运行到我的iPhone时,它都将取消连接:

  

无法启动"项目名称"
  进程启动失败:无法获取进程xxx的任务

所以,我无法在我的Xcode中使用真实设备调试我的应用程序(使用Adhoc配置文件),有没有办法做到这一点?

我的要求是转到特殊的vcdidFinishLaunchingWithOptions方法中的代码如下:

// If application is launched due to  notification,present another view controller.
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification)
{
    [SVProgressHUD showSuccessWithStatus:[NSString stringWithFormat:@"success"]];

    PushDetailViewController *detail_push = [[PushDetailViewController alloc] init];
    detail_push.isPresentCome = YES;

    PushModel *new_model = [PushModel initPushModelWithDic:notification.userInfo];

    if (new_model) {

        detail_push.pushModel = new_model;

        [self.window.rootViewController presentViewController:detail_push animated:NO completion:nil];

    }

}else {

    //LMLSystemAlertControllerShowSingelButtonWithMessageWL(@"没有notification 信息", @"确定");
}

return YES;

而且我不知道notification.userInfo是什么,所以我想调试它,如果我使用SVProgressHUD提醒信息,我的应用程序将崩溃,因为我的iPhone是与Xcode无关,我无法获得错误信息。

所以,有一些问题:

  1. 是否可以在Xcode中使用我的iphone调试我的应用程序(使用adhoc配置文件)?
  2. notification.userInfo的内容是什么,这是我的后台状态推送内容吗?
  3. 我的推送内容(来自我的后台)是哪里?
  4. 尝试 - 1

    我试图提醒notification.userInfo,但如果我访问notification.userInfo,我的应用会崩溃,所以我无法获取它,不知道它是什么。

    尝试 - 2

    我也使用Xcode - >想要找到NSLog信息,什么也找不到:

    enter image description here

3 个答案:

答案 0 :(得分:1)

用于调试UserInfo: 将NSLOG用于打印UserInfo并检查值是否正确。我知道您无法在Xcode控制台中检查NSLOG,但您可以在Xcode中检查设备中的NSLOG选项。 Xcode - >窗口 - >设备 - >在左侧面板中选择您的设备。在这里,您可以看到所有日志。

根据UserInfo详细信息,您可以验证您的代码是否正确。

答案 1 :(得分:1)

要在Adhoc构建模式下调试推送通知有效负载,您只需将UIAlertView放在所需的位置即可。并且可以在iPhone屏幕上看到输出。 :)

例如,在您的情况下。

NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification)
    {
        NSDictionary *apsInfo = [notification objectForKey:@"aps"];
        // Put AlertView here
        UIAlertView *alert =[[UIAlertView alloc]
        initWithTitle:@"NotificationPayload"
        message:[NSString stringWithFormat:@"%@",apsInfo]
        delegate:self
        cancelButtonTitle:@"Ok"
        otherButtonTitles: nil];
        [alert show];

        [SVProgressHUD showSuccessWithStatus:[NSString stringWithFormat:@"success"]];

        PushDetailViewController *detail_push = [[PushDetailViewController alloc] init];
        detail_push.isPresentCome = YES;
        PushModel *new_model = [PushModel initPushModelWithDic:apsInfo];

        if (new_model) {
            detail_push.pushModel = new_model;
            [self.window.rootViewController presentViewController:detail_push animated:NO completion:nil];
        }

    }
    else {
         //LMLSystemAlertControllerShowSingelButtonWithMessageWL(@"没有notification 信息", @"确定");
}

return YES;

完成调试后,请不要忘记评论或删除此AlertView代码。

答案 2 :(得分:0)

我不确定我是否正确理解您的问题,但听起来您在测试推送通知时遇到问题,因为您正在使用" Production&#34 ;推送证书,因此尝试使用Ad-Hoc配置文件进行调试以接收通知?

如果是这种情况,那么解决方案是更新您的推送证书。我们不再需要为" Sandbox"使用一个证书。和#34;生产" - 新的推送证书在两种环境中都有效。因此,您应该能够使用开发配置文件在Xcode中正常构建和调试您的应用程序,并仍然会收到您的通知。

Now in "Sandbox and Production"