2015-10-21 6 views
0

Я делаю приложение iOS 9 Safari AdBlocker. Я использую модуль AdBlockPlusSafari. Приложение работает хорошо на симуляторе.не может загрузить содержимое SafariBlocker. потому что не может получить доступ к NSUserDefault группы приложений

Но когда вы пытаетесь запустить его на устройстве (iPhone6), он не может перезагрузить contentBlocker.

[SFContentBlockerManager 
reloadContentBlockerWithIdentifier:self.contentBlockerIdentifier 
completionHandler:^(NSError *error) { 
    if (error) { 
     NSLog(@"Error in reloadContentBlocker: %@", error); 
    } 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     wSelf.reloading = NO; 
     [wSelf checkActivatedFlag]; 
     if (completion) { 
      completion(error); 
     } 
    }); 
}]; 

дает ошибку Error Domain = ContentBlockerErrorDomain Код = 3 "(NULL)"

Это вызванное доступа к значениям в NSUserDefault (App Group).

- (instancetype)init 
{ 
    if (self = [super init]) 
    { 
     _bundleName = [[[[[NSBundle mainBundle] bundleIdentifier] componentsSeparatedByString:@"."] subarrayWithRange:NSMakeRange(0, 2)] componentsJoinedByString:@"."]; 
     NSString *group = [NSString stringWithFormat:@"group.%@.%@", _bundleName, @"AdBlockerPro"]; 

     NSLog(@"Group name: %@", group); 
     _adblockProDetails = [[NSUserDefaults alloc] initWithSuiteName:group]; 
     [_adblockProDetails registerDefaults: 
    @{ AdblockProActivated: @NO, 
     AdblockProEnabled: @YES 
     }]; 

     _enabled = [_adblockProDetails boolForKey:AdblockProEnabled]; 
     _activated = [_adblockProDetails boolForKey:AdblockProActivated]; 
    } 
    return self; 
} 

Название App Group в приложение хоста и сафари расширения такой же. Но в расширении Safari, когда приложение получает доступ к настройке в NSUserDefault, оно дает мне ошибку. В настройках проекта/возможностях я сделал все для группы приложений. В id приложения это точно относится к имени группы приложений. Это происходит только на устройстве. На симуляторе это работает хорошо. Я не могу найти причину этой ошибки.

Пожалуйста, помогите мне, если вы испытываете это. Ждем вас к вашей помощи.

ответ

0

Я сам нашел причину. Я положил что-то (NSMutableDictionary) в контейнер группы приложений и сделал что-то, чтобы записать файл в пакет расширения. Это запрещено Apple.

Так что я удалил все из AdBlockManager (взаимодействует с группой приложений), за исключением переменных флага (Boolean type). И я продолжил управление файлами с помощью NSFileManager.

http://www.atomicbird.com/blog/sharing-with-app-extensions

Наконец, расширение приложение работает для меня на устройстве.

Удачи вам!

 Смежные вопросы

  • Нет связанных вопросов^_^