在iOS8中在App和App Extension之间共享用户对象

时间:2015-03-16 15:35:35

标签: ios ios8 ios-app-extension pocket

我正在使用Pocket API并在应用上验证用户身份。

在扩展程序中,我想使用登录用户运行方法来调用各种端点。应用程序及其扩展之间共享数据的唯一选择是NSUserDefaults,因为我在各种线程上看到但NSUserDefaults无法保存登录用户的NSObject。

如何在Extention中使用登录用户?

我在应用中记录了这样的用户..

[[PocketAPI sharedAPI] loginWithHandler: ^(PocketAPI *API, NSError     *error){
    if (error != nil)
    {   
            NSlog (@"User Logged In"); 
    }
}];
}

并在我想要使用的扩展程序中:

[[PocketAPI sharedAPI] saveURL:url handler: ^(PocketAPI *API, NSURL *URL,
                                              NSError *error){
    if(error){
        NSLog(@"There was an error in saving the URL : %@ ", [error description]);


    }else{
        NSLog(@"URL was saved successfully ");

    }
}];

如何动态保存[PocketAPI sharedAPI]以使用任何一方的方法? 我如何共享对象的相同实例

1 个答案:

答案 0 :(得分:0)

为了更好地存储用户凭据,可以更好地存储在Keychain中,它也更安全,您也可以在扩展中访问。

  1. 您可以使用 kSecAttrAccessGroup Apple doc 分享钥匙串 将解释它。
  2. 其他选项是共享共享容器中的核心数据或sqlite文件。我在My Blog on Document Provider中做了示例说明,它将解释应用和扩展之间的数据共享。