0

正在使用的代码如下

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [self performSelector:@selector(addContacts) withObject:nil afterDelay:0.1];
}

-(void)addContacts
{
    sqlite3_stmt    *statement;

    const char *dbpath = [databasePath UTF8String];

    if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
    {
        NSString *insertSQL = [NSString stringWithFormat:
                               @"INSERT INTO CONTACTS (name, address, phone) VALUES (\"%@\", \"%@\", \"%@\")",
                               @"Anu", @"0009", @"Hyderabad"];

        const char *insert_stmt = [insertSQL UTF8String];
        sqlite3_prepare_v2(contactDB, insert_stmt,
                           -1, &statement, NULL);
        if (sqlite3_step(statement) == SQLITE_DONE)
        {


        }
        else {

            }
        sqlite3_finalize(statement);
        sqlite3_close(contactDB);
    }

else
{
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Information Alert"
                                                      message:@"Please enter the name "
                                                     delegate:nil
                                            cancelButtonTitle:@"OK"
                                            otherButtonTitles:nil];
    [message show];
}
}

但是当它在后台时它不起作用

4

2 回答 2

0

你可以告诉 iOS 你打算在没有任何额外后台模式的情况下执行一个短暂的后台任务。在开始时使用 UIApplication beginBackgroundTaskWithExpirationHandler:,然后endBackgroundTask:在完成后调用。iOS 不保证您将被允许执行您的后台任务。有关详细信息,请参阅这些方法的文档。

于 2013-06-04T10:52:25.013 回答
0

您可以通过启用后台任务在技术上做到这一点。但苹果只允许某些任务使用后台模式,例如定位服务、音乐、voip 等。如果您伪造音乐或其他允许的任务来执行此操作,您的应用程序可能会被拒绝。

于 2013-06-04T10:44:44.073 回答