Ios 一台设备中有两个应用,从第一个应用上传的图像将出现在第二个应用中

Ios 一台设备中有两个应用,从第一个应用上传的图像将出现在第二个应用中,ios,swift3,Ios,Swift3,我想让两个iOS应用程序说A和B。然后我需要做的是从应用程序中的用户库上传5个图像,并在应用程序B中显示这5个图像。我尝试了使用文档目录,但后来我知道每个应用程序都有自己的文档目录,任何其他应用程序都无法访问该文档目录。现在我不知道怎么做。有什么帮助吗 抱歉,忘了提及我希望脱机完成,因此我不能在两个应用程序中都使用api。您可以使用组应用程序项目导航器->功能->打开组应用。组名称必须是相同的名称,并且还需要在开发人员帐户中启用。现在创建一个共享空间的目录,然后从这两个目录访问数据或图像 //使

我想让两个iOS应用程序说A和B。然后我需要做的是从应用程序中的用户库上传5个图像,并在应用程序B中显示这5个图像。我尝试了使用文档目录,但后来我知道每个应用程序都有自己的文档目录,任何其他应用程序都无法访问该文档目录。现在我不知道怎么做。有什么帮助吗


抱歉,忘了提及我希望脱机完成,因此我不能在两个应用程序中都使用api。

您可以使用组应用程序项目导航器->功能->打开组应用。组名称必须是相同的名称,并且还需要在开发人员帐户中启用。现在创建一个共享空间的目录,然后从这两个目录访问数据或图像

//使用此代码创建共享目录

    let fileManager = FileManager.default

    guard let groupUrl = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "your app group name") else {
        return nil
    }

    var storagePathUrl = groupUrl.appendingPathComponent("FileProviderStorage")
    let storagePath = storagePathUrl.path

    if !fileManager.fileExists(atPath: storagePath) {
        do {
           try fileManager.createDirectory(atPath: storagePath,  withIntermediateDirectories: false, attributes: nil)
        } catch _ {
        }
    } else {
        print("File Path: \(storagePath)")
    }

你可以使用群组应用项目导航器->功能->打开组应用。组名称必须是相同的名称,并且还需要在开发人员帐户中启用。现在创建一个共享空间的目录,然后从这两个目录访问数据或图像

//使用此代码创建共享目录

    let fileManager = FileManager.default

    guard let groupUrl = fileManager.containerURL(forSecurityApplicationGroupIdentifier: "your app group name") else {
        return nil
    }

    var storagePathUrl = groupUrl.appendingPathComponent("FileProviderStorage")
    let storagePath = storagePathUrl.path

    if !fileManager.fileExists(atPath: storagePath) {
        do {
           try fileManager.createDirectory(atPath: storagePath,  withIntermediateDirectories: false, attributes: nil)
        } catch _ {
        }
    } else {
        print("File Path: \(storagePath)")
    }

是的,根据iOS 8.0及更高版本中的新更新,您可以在应用程序组内共享一些数据

您只需创建应用程序组并在该应用程序组之间共享您的数据

下面是启用应用程序组的几个步骤

步骤1:
目标设置->功能->应用程序组启用应用程序组

示例组名称:
groups.companyname
groups.appgroupname

注意:此组中所需的每个应用都必须具有相同的组名 在本节中

第2步:获取通用共享文件夹,您可以在其中存储图像数据库等共享数据

为此,您需要获取该共享文件夹的路径,如下所述

目标-C:

- (NSString *)getSharedGroupFolderPath:(NSString*)aAppGroupName {
    NSURL *aContainerPathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:aAppGroupName];
    return [aContainerPathURL relativePath];
}
static func appGroupContainerURL() -> URL? {
  // 1
  let fileManager = FileManager.default
  guard let groupURL = fileManager
    .containerURL(forSecurityApplicationGroupIdentifier: <APP_GROUP_NAME>) else {
      return nil
  }

  let storagePathUrl = groupURL.appendingPathComponent("File Provider Storage")
  let storagePath = storagePathUrl.path
  // 2
  if !fileManager.fileExists(atPath: storagePath) {
    do {
      try fileManager.createDirectory(atPath: storagePath,
                                              withIntermediateDirectories: false,
                                              attributes: nil)
    } catch let error {
      print("error creating filepath: \(error)")
      return nil
    }
  }
  // 3
  return storagePathUrl
// Returns the file URL for the file to be saved at
    static func fileUrlForDocumentNamed(_ name: String) -> URL? {
        guard let baseURL = appGroupContainerURL() else { return nil }

        let protectedName: String
        if name.isEmpty {
            protectedName = "Untitled"
        } else {
            protectedName = name
        }

        return baseURL.appendingPathComponent(protectedName)
            .appendingPathExtension("your file extension")
    }
Swift:

- (NSString *)getSharedGroupFolderPath:(NSString*)aAppGroupName {
    NSURL *aContainerPathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:aAppGroupName];
    return [aContainerPathURL relativePath];
}
static func appGroupContainerURL() -> URL? {
  // 1
  let fileManager = FileManager.default
  guard let groupURL = fileManager
    .containerURL(forSecurityApplicationGroupIdentifier: <APP_GROUP_NAME>) else {
      return nil
  }

  let storagePathUrl = groupURL.appendingPathComponent("File Provider Storage")
  let storagePath = storagePathUrl.path
  // 2
  if !fileManager.fileExists(atPath: storagePath) {
    do {
      try fileManager.createDirectory(atPath: storagePath,
                                              withIntermediateDirectories: false,
                                              attributes: nil)
    } catch let error {
      print("error creating filepath: \(error)")
      return nil
    }
  }
  // 3
  return storagePathUrl
// Returns the file URL for the file to be saved at
    static func fileUrlForDocumentNamed(_ name: String) -> URL? {
        guard let baseURL = appGroupContainerURL() else { return nil }

        let protectedName: String
        if name.isEmpty {
            protectedName = "Untitled"
        } else {
            protectedName = name
        }

        return baseURL.appendingPathComponent(protectedName)
            .appendingPathExtension("your file extension")
    }
使用下面支持的方法获取文件路径:

- (NSString *)getSharedGroupFolderPath:(NSString*)aAppGroupName {
    NSURL *aContainerPathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:aAppGroupName];
    return [aContainerPathURL relativePath];
}
static func appGroupContainerURL() -> URL? {
  // 1
  let fileManager = FileManager.default
  guard let groupURL = fileManager
    .containerURL(forSecurityApplicationGroupIdentifier: <APP_GROUP_NAME>) else {
      return nil
  }

  let storagePathUrl = groupURL.appendingPathComponent("File Provider Storage")
  let storagePath = storagePathUrl.path
  // 2
  if !fileManager.fileExists(atPath: storagePath) {
    do {
      try fileManager.createDirectory(atPath: storagePath,
                                              withIntermediateDirectories: false,
                                              attributes: nil)
    } catch let error {
      print("error creating filepath: \(error)")
      return nil
    }
  }
  // 3
  return storagePathUrl
// Returns the file URL for the file to be saved at
    static func fileUrlForDocumentNamed(_ name: String) -> URL? {
        guard let baseURL = appGroupContainerURL() else { return nil }

        let protectedName: String
        if name.isEmpty {
            protectedName = "Untitled"
        } else {
            protectedName = name
        }

        return baseURL.appendingPathComponent(protectedName)
            .appendingPathExtension("your file extension")
    }

希望这将帮助您实现您的要求。

是的,您可以根据iOS 8.0及更高版本中的新更新在应用程序组内共享一些数据

您只需创建应用程序组并在该应用程序组之间共享您的数据

下面是启用应用程序组的几个步骤

步骤1:
目标设置->功能->应用程序组启用应用程序组

示例组名称:
groups.companyname
groups.appgroupname

注意:此组中所需的每个应用都必须具有相同的组名 在本节中

第2步:获取通用共享文件夹,您可以在其中存储图像数据库等共享数据

为此,您需要获取该共享文件夹的路径,如下所述

目标-C:

- (NSString *)getSharedGroupFolderPath:(NSString*)aAppGroupName {
    NSURL *aContainerPathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:aAppGroupName];
    return [aContainerPathURL relativePath];
}
static func appGroupContainerURL() -> URL? {
  // 1
  let fileManager = FileManager.default
  guard let groupURL = fileManager
    .containerURL(forSecurityApplicationGroupIdentifier: <APP_GROUP_NAME>) else {
      return nil
  }

  let storagePathUrl = groupURL.appendingPathComponent("File Provider Storage")
  let storagePath = storagePathUrl.path
  // 2
  if !fileManager.fileExists(atPath: storagePath) {
    do {
      try fileManager.createDirectory(atPath: storagePath,
                                              withIntermediateDirectories: false,
                                              attributes: nil)
    } catch let error {
      print("error creating filepath: \(error)")
      return nil
    }
  }
  // 3
  return storagePathUrl
// Returns the file URL for the file to be saved at
    static func fileUrlForDocumentNamed(_ name: String) -> URL? {
        guard let baseURL = appGroupContainerURL() else { return nil }

        let protectedName: String
        if name.isEmpty {
            protectedName = "Untitled"
        } else {
            protectedName = name
        }

        return baseURL.appendingPathComponent(protectedName)
            .appendingPathExtension("your file extension")
    }
Swift:

- (NSString *)getSharedGroupFolderPath:(NSString*)aAppGroupName {
    NSURL *aContainerPathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:aAppGroupName];
    return [aContainerPathURL relativePath];
}
static func appGroupContainerURL() -> URL? {
  // 1
  let fileManager = FileManager.default
  guard let groupURL = fileManager
    .containerURL(forSecurityApplicationGroupIdentifier: <APP_GROUP_NAME>) else {
      return nil
  }

  let storagePathUrl = groupURL.appendingPathComponent("File Provider Storage")
  let storagePath = storagePathUrl.path
  // 2
  if !fileManager.fileExists(atPath: storagePath) {
    do {
      try fileManager.createDirectory(atPath: storagePath,
                                              withIntermediateDirectories: false,
                                              attributes: nil)
    } catch let error {
      print("error creating filepath: \(error)")
      return nil
    }
  }
  // 3
  return storagePathUrl
// Returns the file URL for the file to be saved at
    static func fileUrlForDocumentNamed(_ name: String) -> URL? {
        guard let baseURL = appGroupContainerURL() else { return nil }

        let protectedName: String
        if name.isEmpty {
            protectedName = "Untitled"
        } else {
            protectedName = name
        }

        return baseURL.appendingPathComponent(protectedName)
            .appendingPathExtension("your file extension")
    }
使用下面支持的方法获取文件路径:

- (NSString *)getSharedGroupFolderPath:(NSString*)aAppGroupName {
    NSURL *aContainerPathURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:aAppGroupName];
    return [aContainerPathURL relativePath];
}
static func appGroupContainerURL() -> URL? {
  // 1
  let fileManager = FileManager.default
  guard let groupURL = fileManager
    .containerURL(forSecurityApplicationGroupIdentifier: <APP_GROUP_NAME>) else {
      return nil
  }

  let storagePathUrl = groupURL.appendingPathComponent("File Provider Storage")
  let storagePath = storagePathUrl.path
  // 2
  if !fileManager.fileExists(atPath: storagePath) {
    do {
      try fileManager.createDirectory(atPath: storagePath,
                                              withIntermediateDirectories: false,
                                              attributes: nil)
    } catch let error {
      print("error creating filepath: \(error)")
      return nil
    }
  }
  // 3
  return storagePathUrl
// Returns the file URL for the file to be saved at
    static func fileUrlForDocumentNamed(_ name: String) -> URL? {
        guard let baseURL = appGroupContainerURL() else { return nil }

        let protectedName: String
        if name.isEmpty {
            protectedName = "Untitled"
        } else {
            protectedName = name
        }

        return baseURL.appendingPathComponent(protectedName)
            .appendingPathExtension("your file extension")
    }

希望这将帮助您实现您的要求。

从第一个应用程序将图像上载到服务器,在第二个应用程序中从服务器获取图像。需要在线完成,所以无法使用服务。使用共享文件夹或iCloud。从第一个应用程序将图像上载到服务器,在第二个应用程序中从服务器获取图像。需要在线完成,因此无法使用服务。请使用共享文件夹或iCloud。我是否需要在guard let groupUrl=fileManager.containerURL(用于安全应用程序组标识符:“您的应用程序组名称”)中添加组。(我的应用程序组名称)否则{返回NIL谢谢。它正在工作。我已成功创建共享路径是否需要添加组。(我的应用程序组名称)在guard中,让groupUrl=fileManager.containerURL(用于安全应用程序组标识符:“您的应用程序组名称”)else{return nil谢谢。它正在工作。我已成功创建了一个共享路径谢谢你的回答。你能告诉我如何将图像添加到该组容器文件夹并在其他应用中检索它吗?请务必给我一个小时,我将更新我的回答,因为我需要参加会议。谢谢。好的。我将等待你的答复。谢谢你让我们一起来。谢谢你的回复nswer。您能告诉我如何将图像添加到该组容器文件夹并在其他应用程序中检索它吗?请务必给我一个小时,我将更新我的答案,因为我需要参加会议。谢谢。好的。我将等待您的答复。谢谢。