• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 与 Host App 的自定义键盘扩展通信在设备中不工作但在模拟器中工作

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:22:51 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在使用自定义键盘扩展。这几乎完成了,但是当我与扩展程序和我的主机应用程序通信数据时,我只是面临设备问题,而我的主机应用程序没有在设备中工作,但在模拟器中工作的情况相同。我的代码如下:

HostApp View Controller :

 - (void)viewDidLoad {

    _defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];
    [_defaultvalue setBool:YES forKey"Layout"];
    [_defaultvalue synchronize];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (IBAction)RightActionid)sender {


    _defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];
    [_defaultvalue setBool:YES forKey"Layout"];
    [_defaultvalue synchronize];

}

- (IBAction)leftActionid)sender {

    _defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];
    [_defaultvalue setBool:NO forKey"Layout"];
    [_defaultvalue synchronize];
}

我使用以下代码在我的扩展目标中检查此 BOOL 值,并根据我的需要更改键盘布局:

-(void)LoadKeyboardview
{

_defaultvalue = [[NSUserDefaults alloc] initWithSuiteName"group.myapp.myappname.targetKeyboard"];

        if([_defaultvalue boolForKey"Layout"])
        {
            self.ObjKeyLayout=[[[NSBundle mainBundle]loadNibNamed"keyboardLayout" owner:nil options:nil]objectAtIndex:0];
            [self addGesturToKeyBoard];
            self.inputView =self.ObjKeyLayout;

        }
        else{

            self.ObjKeyLayout=[[[NSBundle mainBundle]loadNibNamed"leftLayout" owner:nil options:nil]objectAtIndex:0];
            [self addGesturToKeyBoard];

            self.inputView =self.ObjKeyLayout;

        }

}

相同的代码在模拟器 ios8 设备 iPhone5 中运行良好。请问我在苹果文档中读到的是否需要更多代码,上面写着 NSUserDefaults initWithSuiteName 帮助我,谢谢。

更新:

我已经在 plist 和 setting->keyboard-customkeyboar->Full Access ON

中设置了 RequestsOpenAccess

我的扩展列表:

enter image description here



Best Answer-推荐答案


我得到解决方案,我创建新的临时配置文件并启用 app-groups 并从 我的 Xcode 项目中设置 app group target-->capability--Expand App Group 并点击 + 添加应用组,如下图所示:

enter image description here

为我的键盘扩展目标做同样的事情。然后我在 NSuserDefault 中使用了这个设置应用程序组标识符:

 _defaultvalue = [[NSUserDefaults alloc] initWithSuiteName:@"group.keyboaredExtention"];
     [_defaultvalue setBool:NO forKey:@"Layout"];
    [_defaultvalue synchronize];

现在在我的设备和模拟器中工作正常。希望对其他人有所帮助。

关于ios - 与 Host App 的自定义键盘扩展通信在设备中不工作但在模拟器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26162773/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap