gpt4 book ai didi

ios - 我想触发 iOS7 询问用户使用蓝牙和 Twitter 帐户的权限

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:46:13 26 4
gpt4 key购买 nike

这与大多数人的要求有些落后。我想特意触发对话框,请求用户允许:

  • 连接到蓝牙设备,即使在离线状态下也是如此。
  • 访问基于 iOS 的 Twitter 帐户。

我已经有一个类似的位置对话框,工作正常。我这样做是因为我想让请求许可的过程更温和一些,就像 Heyday 一样,通过显示一个欢迎屏幕来解释为什么应用程序需要此服务,然后当用户点击确定时,启动请求并触发对话框。

我已经尝试了一些东西。对于 Twitter,我尝试了以下方法:

- (void)triggerTwitterApprovalWithCompletion:(void (^)(BOOL, NSError *))completion  {
self.accountStore = [[ACAccountStore alloc] init]; //setup as a property.
ACAccountType *twitterAccountType = [self.accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
[self.accountStore requestAccessToAccountsWithType:twitterAccountType options:nil completion:^(BOOL granted, NSError *error) { //completion handling is on indeterminate queue so I force main queue inside
dispatch_async(dispatch_get_main_queue(), ^{
completion(granted, error); //triggers displaying the next screen, working
});
}];
}

但是虽然授予了权限,但它是自动的,而不是向用户显示对话框并批准它的结果。

对于蓝牙版本,我还没有找到一些可以触发它的代码。在请求权限的问题上,文档和编程指南都相对安静。我能找到的唯一一个引用是,通过为 bluetooth-peripheral 设置 plist key ,用户将在应用程序启动时自动收到提示。这在流程中还为时过早,无法发挥作用。

最佳答案

只有外围角色需要用户权限才能运行。中央可以为所欲为。当您希望用户授予权限时,只需实例化一个 CBPeripheralManager 即可触发对话框。

pmanager = [[CBPeripheralManager alloc] initWithDelegate:self queue:nil];

然后您使用 peripheralManagerDidUpdateState: 委托(delegate)方法来了解用户的决定。如果您的应用程序不在后台运行,则无需在 plist 中设置 bluetooth-peripheral 后台模式。

请记住,该对话框在应用程序的生命周期内只会弹出一次,并且当应用程序被删除并重新安装时,设置不会被重置。

另请注意,鉴于此行为,

The only one reference I can find is that by having a plist key for bluetooth-peripheral the user will be prompted automagically on app launch.

不是真的。

对于推特部分。我还没有尝试使用该 API,但发现了几个建议授权自动为您处理或 iOS 只会在第一次询问的答案。

要测试弹出问题,您应该在
设置->常规->重置->中手动重置设置kbd>重置位置和隐私

只是一个小补充:best practices for asking for user permission

关于ios - 我想触发 iOS7 询问用户使用蓝牙和 Twitter 帐户的权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23455317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com