我对iOS 7上的核心蓝牙的状态保存和恢复有疑问.
我似乎无法让它正常工作.我已经按照苹果在他们的核心蓝牙文档中提到的每个指导以及状态保存的一般文档.
例如:iOS应用程序的核心蓝牙背景处理和此处:iOS状态保存和恢复
我可以让一般的状态保存在设备上工作(对于视图控制器和对象等),但不能用于蓝牙管理器.
据我所知,cheklist看起来像这样:
通过在密钥CBCentralManagerOptionRestoreIdentifierKey的选项字典中分配恢复标识符来分配和初始化中央管理器对象时,选择保留和恢复.
在系统重新启动应用程序后,重新实例化任何中央管理器对象.当应用程序:didFinishLaunchingWithOptions:被调用时,这在app delegate中完成.在这里,我应该在选项字典中查找UIApplicationLaunchOptionsBluetoothCentralsKey,然后使用该密钥重新安排CBManager.在这里出现问题,因为该密钥从来没有任何标识符,因此我无法重新启用它.
实现适当的恢复委托方法.我也做了这一步,但由于管理器从未重新实例化,我从未收到过这个委托回调.
该应用程序在后台工作正常,我也遵循该部分的所有步骤.
现在,说了这么多,我并不确定如何测试这个,这可能是这个问题的一部分.我现在这样做的方法是按下iOS设备上的主页按钮(执行设备),这样它就可以将应用程序置于后台并返回主屏幕.在这样做时,我可以通过查看我的日志输出来判断所有常规状态保存调用是否实现.在此之后,我通过按Xcode中的停止按钮退出应用程序以终止后台进程.我现在通过Xcode重新启动应用程序,现在我再次看到正在执行的所有常规状态保存代码,除了蓝牙管理器之外的所有状态都恢复状态.
如果这是错的,请告诉我.但总的来说,我对此非常困惑,因为它在核心蓝牙文档中说,只有当" 你的应用程序被系统重新启动 "时才会进行保存.那个的真实意义是什么?我还在Apple开发者论坛上阅读了一篇文章,自从iOS 7以来,如果用户手动杀死我正在做的应用程序,操作系统现在永远不会以任何理由重新启动应用程序.
任何有关这方面的帮助将不胜感激!
/一个
我已经寻找了一段时间的答案,现在没有成功.我基本上想要获得包含前缀的表单字段的名称.有谁知道如何做到这一点?
例:
假设我在views.py中创建一个表单并包含这样的前缀:
myform = SomeForm(prefix="prefix")
Run Code Online (Sandbox Code Playgroud)
然后将其传递给我的模板.如果我然后直接访问模板中的表单字段,我{{myform.username}}得到类似的东西(注意包含前缀):
<select id="id_prefix-username" name="prefix-username"> ...
Run Code Online (Sandbox Code Playgroud)
如果我想手动创建表单标签并只插入名称,那么我不会得到它的前缀:
<input name="{{ myform.username.name }}">
Run Code Online (Sandbox Code Playgroud)
会产生:
<input name="username">
Run Code Online (Sandbox Code Playgroud)
注意它现在如何缺少前缀.现在,我可以这样做,以达到相同的结果:
<input name="{{ myform.prefix }}-{{ myform.username.name }}">
Run Code Online (Sandbox Code Playgroud)
但必须有内置的方法来做到这一点?
我正在尝试使用iOS 12中的新iOS快捷方式应用程序创建一个INIntent.我已阅读文档并观看了有关它的Apple 视频.
我已经成功设置了所有内容并且快捷方式运行良好,但是我似乎无法弄清楚如何设置用户可以在设置快捷方式时编辑的可自定义选项.这方面的一个例子是Calendar应用程序的快捷方式是如何设置的:
请注意Get,Add Filter,Sort by等选项.
我知道我可以在Intents.intentdefeniton文件中向Intent添加参数,但是在通过SiriKit将交互捐赠给iOS系统之前,需要从应用程序本身设置这些参数.
无论我做什么,Intent只显示空,没有选项.
任何帮助表示赞赏!