标签: ios-app-group

如何在Watch OS 2中引用不受支持的框架

我将我的应用更新为最新的swift 2.0语法.这样做,我的Watchkit应用程序已经破产.问题是watchkit app引用了一个引用框架AVFoundation的类.WatchOS2显然现在不再支持一些标准框架:

对基于网络的操作的支持包括以下技术:

WatchKit扩展可以通过NSURLSession对象直接访问网络.WatchKit扩展可以完全访问NSURLSession功能,包括在后台下载文件的功能.有关如何使用此类的信息,请参阅URL加载系统编程指南.Watch Connectivity框架支持Watch应用程序和iOS应用程序之间的双向通信.使用此框架来协调两个应用程序之间的活动.请参阅与您的Companion iOS应用程序通信.

适用于WatchKit的系统技术

所以现在我无法编译监视工具包代码,因为"没有找到这样的模块"在尝试使用AVFoundation框架时是一条错误消息.我怎样才能解决这个问题,并在我的Apple Watch应用程序中继续引用该类和框架.我应该在手机和手表之间传递数据吗?有没有办法将框架链接到扩展?

我想要做的是以下,在我的InterfaceController中:

 override func willActivate() {
    super.willActivate()

    let defaultsShared = NSUserDefaults(suiteName: "somesharedappgroup")
    let defaults = NSUserDefaults.standardUserDefaults()


     if let barcodeString = defaultsShared!.objectForKey("barcode") as? String {
        if let barcodeContent = RSUnifiedCodeGenerator.shared.generateCode(barcodeString, machineReadableCodeObjectType: AVMetadataObjectTypeCode39Code) {
            barcode.setImage(barcodeContent)
            label.setText("ID: \(barcodeString)")
        } else {
            label.setText("Please setup extensions in the settings of SHPID.")
            barcode.setImage(nil)
        }
    } else {

        label.setText("Please setup extensions in the settings of SHPID.")
        barcode.setImage(nil)

    }
}
Run Code Online (Sandbox Code Playgroud)

RSUnifiedCodeGenerator是利用AVFoundation生成字符串的条形码图像的类.此外,生成器采用的类型是AVObject:AVMetadataObjectTypeCode39Code.这个解决方案在第一个WatchOS中运行良好,但现在在OS 2中仍然存在问题.我看到WatchConnectivity可能是一个解决方案,并且它只是从手机本身传递条形码,但这需要我停止支持iOS 8.对于在WatchOS 2上使用AVFoundation,这是最好的解决方案.如果我不能这样做,我应该怎么做才能在通话时将这个图像从手机传递给手表.谢谢.

ios swift ios-app-group watchkit swift2

11
推荐指数
1
解决办法
979
查看次数

无法使用应用程序组访问NSUserDefaults

我正在开发一个应用程序和一个小部件,小部件需要从app获取数据.我已经使用以下代码在NSUserDefaults上进行读写.我也用于$(PRODUCT_BUNDLE_IDENTIFIER).widget小部件并$(PRODUCT_BUNDLE_IDENTIFIER)参考这篇文章.但是widget无法从app或NSUserDefaults获取数据.我怎样才能使它工作?

func addTask(name: String?) {
    let key = "keyString"
    tasks.append(name!)
    let defaults = NSUserDefaults(suiteName: "group.Mins")
    defaults?.setObject(tasks, forKey: key)
    defaults?.synchronize()

}
Run Code Online (Sandbox Code Playgroud)

///////

let defaults = NSUserDefaults(suiteName: "group.Mins")
let key = "keyString"

if let testArray : AnyObject = defaults?.objectForKey(key) {
    let readArray : [String] = testArray as! [String]
    timeTable = readArray
    timeTable = timeTable.sort(<)
    print("GOT IT")
    print("timetable: \(timeTable)")
}
Run Code Online (Sandbox Code Playgroud)

xcode nsuserdefaults ios swift ios-app-group

11
推荐指数
1
解决办法
8839
查看次数

如何从Cordova访问应用程序组共享容器?

我在cordova中使用window.resolveLocalFileSystemURL来访问文件系统.但是我找不到使用app group获取目录路径的方法.

在IOS中,我可以轻松使用containerURLForSecurityApplicationGroupIdentifier.

干杯

ios cordova ios-app-group

11
推荐指数
1
解决办法
571
查看次数

Xcode 8:每个方案的不同权利导致错误

我发现XCode 8存在问题,其中.entitlements文件未针对每个方案正确引用.基本上,我的Debug .entitlements文件正在为我的Release方案引用.这导致了一个问题,因为我们实现了新的Rich推送通知逻辑,并且需要使用App组.

我使用两个不同的团队(开发和生产),因此将有两个特定的应用程序组.

有谁知道如何解决这个问题?

谢谢

entitlements ios code-signing-entitlements ios-app-group xcode8

10
推荐指数
1
解决办法
4291
查看次数

无法将文件保存到iOS 8上的App Groups

我试图用来- (NSURL *)containerURLForSecurityApplicationGroupIdentifier:(NSString *)groupIdentifier在iOS 8 b4上的容器应用程序和扩展程序之间保存/加载文件.

这是代码:

NSURL *containerURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:groupID];
containerURL = [containerURL URLByAppendingPathComponent:[NSString stringWithFormat:@"Library/Caches/test.txt"]];
NSString* string = @"hihihihihi";
NSError* error;
[string writeToURL:containerURL atomically:YES encoding:NSUTF8StringEncoding error:&error];
NSLog(@"%@",error);
Run Code Online (Sandbox Code Playgroud)

我将此代码放在扩展(自定义键盘)和容器应用程序中.当我在iOS模拟器上运行它时,它们都可以成功保存文件.但是在iOS设备上,扩展程序无法保存文件(而容器应用程序仍然可以)

当扩展程序试图保存文件时,控制台显示可可错误513.

2014-07-31 01:37:49.316 TestExtention [2359:288820] Error Domain = NSCocoaErrorDomain Code = 513"无法完成操作.(Cocoa error 513.)"UserInfo = 0x15df2100 {NSFilePath =/private/var/mobile/Containers/Shared/AppGroup/4FA2DA5E-89C3-4BC3-AA5B-DD869827C5E7/Library/Caches/test.txt,NSUnderlyingError = 0x15df1d90"操作无法完成.操作不允许"}

这是iOS 8扩展的限制吗?

iphone sandbox objective-c ios8 ios-app-group

9
推荐指数
1
解决办法
4490
查看次数

供应配置文件不包括com.apple.security.application-groups权利

我在配置Xcode配置文件时遇到错误.

供应配置文件$ ProfileName不包含com.apple.security.application-groups权利.

如何解决它.我的配置文件/证书似乎没有一些功能.如何/在哪里添加这些功能?

在此输入图像描述

xcode ios provisioning-profile ios-app-group

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

iOS - 今日扩展小部件随着时间的推移而清

情况应该如此

适当的情况

我们有一个今天的小部件,根据相应应用程序中的数据设置,最多显示6个按钮.此数据使用app-groups共享.如果至少配置了一个按钮,它将显示如上图所示.如果用户未登录,或者未配置任何按钮,则会显示如下图所示的消息.

没有配置按钮

问题

在未打开应用程序几个小时(大约4到7之间)之后,窗口小部件将恢复为"未配置按钮"视图.

分析到目前为止

从app-group加载数据的方式是使用如下所示的代码完成的.(完整代码的要点)在我编写它的方式中,可以显示"无按钮配置"视图的唯一方法是buttons数组是否实际存在但长度为零.

我期望缓存清除或后台服务停止,但据我所知,应该更早地捕获异常:

  • 如果无法与app-group数据建立连接,userDefaults则应为nil,因此应显示"Not logged in in view".
  • 如果从未定义按钮,buttons则应为nil,因此应再次显示"未登录视图"

考虑到应用程序在后台不执行任何操作,应用程序本身无法更改按钮.

我尝试连接调试器时再现这个,但问题不会重现.

有没有人对如何解决这个问题或如何开始调试这一点有任何想法?

相关文件:

相关代码:

private struct sharedData {
        static var baseUrl: String?
        static var token: String?
        static var phoneDeviceId: String?
        static var buttons: Array<Button>?
    }

func loadData() {
        let groupIdentifier = "group." + NSBundle.mainBundle().bundleIdentifier!
        var groupIdArray = groupIdentifier.componentsSeparatedByString(".")
        groupIdArray.removeAtIndex(groupIdArray.count - 1)
        let appGroupIdentifier = groupIdArray.joinWithSeparator(".");

        let userDefaults = NSUserDefaults.init(suiteName: appGroupIdentifier)
        if (userDefaults == nil) {
            print("Error …
Run Code Online (Sandbox Code Playgroud)

ios swift ios-app-group today-extension swift2

9
推荐指数
1
解决办法
395
查看次数

设置包不能在watchOS 2上运行

这在watchOS 1上不是问题,但现在在watchOS 2上我无法读取手表扩展上的值.

根据Apple文档,这是可能的.根据这个帖子的一些人的说法,这是可能的.根据这个线程上的Apple员工的说法,这是可能的.

据我所知,我正确地设置了所有内容:

  • 我在iOS应用上启用了App Groups,并使用相同的标识符来观看扩展.
  • 我将Settings-Watch.bundle添加到iOS应用程序中,并ApplicationGroupContainerIdentifier为plist 添加了相同的标识符

当我NSUserDefaults使用标识符作为套件名称初始化对象时,我无法读取监视扩展名上的值.我可以在iOS应用程序上阅读它们.这发生在模拟器和真实设备中.

请不要发布有关如何使用Watch Connectivity执行此操作的答案.只有在没有Watch Connectivity的watchOS 2上的共享应用程序组才能实现这一点,人们可以做到这一点,而这里直接来自文档:

在watchOS 2中,您的WatchKit扩展可能会读取首选项的值,但您无法编写新值.watchOS 2中的首选项从iOS转发到Apple Watch,但您所做的任何修改都不会发送回iOS.

nsuserdefaults ios ios-app-group watchkit

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

得到不满意的权利

当我启动MacOS应用程序时,我可以在控制台上看到错误

 com.myAppBundle: Unsatisfied entitlements: com.apple.security.application-groups 
 Disallowing: com.myAppBundle
Run Code Online (Sandbox Code Playgroud)

但是,似乎该应用程序工作正常,我确实有权利文件与这些值:

<key>com.apple.security.app-sandbox</key>
    <true/>
<key>com.apple.security.application-groups</key>
    <array>
        <string>$(TeamIdentifierPrefix)group</string>
    </array>
Run Code Online (Sandbox Code Playgroud)

那么为什么我会收到"不满意的权利"错误?

编辑:

对于iOS应用程序,除了功能选项卡之外,还需要在Apple Developer帐户中添加应用程序组.但OSX应用程序没有这样的选项

macos entitlements provisioning-profile ios-app-group

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

如何使用XCode 6.4下载和替换AppGroup容器

我知道如何使用XCode 6的Devices窗口下载和替换特定iOS应用程序的文件系统容器.

但是对于我正在开发的应用程序,我需要能够下载和替换共享的AppGroup容器以进行调试.这将使我能够模拟AppGroup文件夹内容中的情况以进行测试.

任何人都可以告诉我如何做到这一点?可能吗?

更新:我应该澄清这是用于在真实的iOS设备上进行测试.使用iOS模拟器时,我已成功修改AppGroup文件夹 - 因为可以通过Finder/Mac的文件系统直接访问这些文件夹.

xcode ios ios-app-group

7
推荐指数
1
解决办法
1038
查看次数