代码之家  ›  专栏  ›  技术社区  ›  marcusturewicz

启动CMMotionActivityManager会产生SIGABRT

  •  1
  • marcusturewicz  · 技术社区  · 7 年前

    我试图检测原生Xamarin中的运动活动。iOS应用程序,在iPhone 6s上运行。我这样启动经理:

    var _manager = new CMMotionActivityManager();
    _manager.StartActivityUpdates(new NSOperationQueue(), (activity) =>
    {
        // do something with activity 
    });
    

    当我运行应用程序时,它失败,出现以下错误:

    2017-07-01 11:38:51.722 iosapp[1095:318780]关键:本机

    2017-07-01 11:38:51.813 iosapp[1095:318780]严重:0
    mono\u handle\u native\u crash+260 2017-07-01 11:38:51.813 iosapp[1095:318780]关键:1 libsystem\u platform.dylib
    0x000000018ca1131c _sigtramp+52 2017-07-01 11:38:51.813
    iosapp[1095:318780]严重:3 libsystem\u kernel.dylib
    0x000000018c9484fc system\u set\u sfi\u window+0 2017-07-01 11:38:51.813 iosapp[1095:318780]临界:4 TCC

    0x000000018fb643b8+0 2017-07-01 11:38:51.813
    iosapp[1095:318780]临界:7 libxpc.dylib
    iosapp[1095:318780]临界:8 libxpc.dylib
    0x000000018ca46ea8+40 2017-07-01 11:38:51.814
    0x000000018c80a9a0+16 2017-07-01 11:38:51.814 iosapp[1095:318780]严重:10 libdispatch.dylib
    0x000000018c8190d4+644 2017-07-01 11:38:51.814 iosapp[1095:318780]严重:11 libdispatch.dylib
    iosapp[1095:318780]严重:12 libdispatch.dylib
    0x000000018c81a7d0+124 2017-07-01 11:38:51.814
    0x000000018ca13100 \u pthread\u wqthread+1096 2017-07-01 11:38:51.814 iosapp[1095:318780]严重:14 libsystem\u pthread.dylib
    0x000000018ca12cac start\u wqthread+4 2017-07-01 11:38:51.814 ============在执行本机代码时获得了SIGABRT。这通常表示致命的 mono运行时或用户使用的本机库之一出错

    应用

    我实例化经理的方式是否有问题?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Terrance    7 年前

    可能需要更多的代码,但请尝试使用主NSOperationQueue

    public void StartMotionUpdates (Action<ActivityType> handler)
            {
                motionActivityMgr.StartActivityUpdates (NSOperationQueue.MainQueue, ((activity) => {
                    handler (ActivityDataManager.ActivityToType (activity));
                }));
            }
    

    注*我在构造函数中初始化 motionActivityMgr = new CMMotionActivityManager (); 我要离开样品: https://github.com/xamarin/ios-samples/blob/master/ios8/MotionActivityDemo/MotionActivityDemo/ActivityDataManager.cs

        2
  •  0
  •   marcusturewicz    7 年前

    解决了的。这是info.plist的权限问题。

    iOS Core Motion docs :

    重要信息:iOS 10.0上或之后链接的iOS应用程序必须包括使用情况 需要。未能包含这些密钥将导致应用程序崩溃。到 具体来说,访问运动和健身数据必须包括 NSMotionUsageDescription。

    在我将此键包含在info.plist中之后:

    <key>NSMotionUsageDescription</key>
    <string>MotionActivity App needs Motion Access</string>
    

    它就像一个符咒。