相关疑难解决方法(0)

beginBackgroundTaskWithExpirationHandler

我正在制作一个音频将在后台播放的应用程序.在以下代码中,bgTask未声明.bgTask应该是什么样的对象?

- (void)applicationDidEnterBackground:(UIApplication *)application 
{
    UIApplication  *app = [UIApplication sharedApplication];
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
        [app endBackgroundTask:bgTask]; 
        bgTask = UIBackgroundTaskInvalid;
    }];

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{});

    [app endBackgroundTask:bgTask]; 
    bgTask = UIBackgroundTaskInvalid;
}
Run Code Online (Sandbox Code Playgroud)

iphone cocoa-touch

14
推荐指数
2
解决办法
2万
查看次数

iOS应用程序在后台崩溃,因为更改了设置 - >隐私 - >联系我的应用程序开启/关闭

在我的应用程序中我收到联系信息直接购买这样做...

ABAddressBookRef m_addressbook = ABAddressBookCreate();

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);

CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);

for (int i=0;i < nPeople;i++)
{
    ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
    CFStringRef company,firstName,lastName;

     firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
     lastName  = ABRecordCopyValue(ref, kABPersonLastNameProperty);
     company = ABRecordCopyValue(ref, kABPersonOrganizationProperty);
}
Run Code Online (Sandbox Code Playgroud)

因此,我需要首先检查这是否为我的应用程序的开/关设置 - >隐私 - >联系人开/关.

为此,我这样做:

__block BOOL accessGranted = NO;


float sysver = [[[UIDevice currentDevice]systemVersion]floatValue];

if(sysver>=6) {
    ABAddressBookRef addressBook = ABAddressBookCreate();

    if (ABAddressBookRequestAccessWithCompletion != NULL) {  
        dispatch_semaphore_t sema = dispatch_semaphore_create(0);
        ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
            accessGranted = granted;
            dispatch_semaphore_signal(sema);});

     dispatch_semaphore_wait(sema, …
Run Code Online (Sandbox Code Playgroud)

ios

8
推荐指数
1
解决办法
3163
查看次数

在设置中更改权限AddressBook时应用程序崩溃

Swift(iOS 8/iOS 9):当我在真实设备上的设置中更改权限AddressBook时应用程序崩溃

在 码 码

iphone ios swift2

5
推荐指数
1
解决办法
3003
查看次数

iOS因信号9终止而被终止

我正在制作一个iOS应用程序,并且在iOS世界中是新手。在这个应用程序中,我想访问用户联系人。一切进展顺利,运作良好。但是我经历了一个惊人的行为,因为我是android开发人员,所以在Android中还从未见过。

在iOS中访问用户联系人,我使用的是Contacts Framework。我认为它比iOS中的其他任何版本都相对容易和快捷。但是,我无法完全利用这一点。让我告诉你我做了什么,我遇到了什么问题。

在ViewController和User上请求权限的过程是通过Dialog询问联系人权限的提示。如果用户允许许可,一切都会顺利进行,但是当用户不允许许可时,就会出现麻烦。

访问用户联系人更为必要,因为我的应用程序的整个工作和基本业务构想都取决于用户联系人。现在要处理这个问题,当用户不允许权限时,我将显示另一个对话框,告诉他必须允许权限,以便App可以继续进行。

现在,我将用户带到他可以允许该权限的设置,或者他可以简单地再次返回。现在结账2件

情况1:当用户进入“设置”屏幕并在未经允许的情况下再次返回时,当我将用户带到“设置”屏幕时,除了允许其返回我的应用程序外,我尝试再次向他显示相同的对话框,以在每种情况下均允许其访问权限。一切顺利。我的意思是出于测试目的,我多次重复相同的步骤,我的意思是我不允许自己的“联系人”权限,这需要我进行设置,从设置屏幕返回到我的应用程序,然后我又能看到与我相同的对话框设置屏幕。这可以

情况2:当用户进入设置屏幕并且他允许该权限时:在这里,当用户允许该权限时,我在日志中收到消息“来自调试器的消息:由于信号9而终止”。当我回到我的应用程序时,它又重新开始了。看来我的应用程序重新打开或在后台崩溃。

重要说明:为此,我检查了我的记忆或任务在后台执行的所有操作,但后台没有任何操作。崩溃前我的内存大小为54.78 mb。而且我不认为这值得担心。

有人知道发生了什么吗?

xcode ios swift contacts-framework

4
推荐指数
2
解决办法
1705
查看次数

标签 统计

ios ×3

iphone ×2

cocoa-touch ×1

contacts-framework ×1

swift ×1

swift2 ×1

xcode ×1