8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何在 TS 上从 Iphone 访问加速度计?

Melloware 3月前

40 0

在为 Telegram 开发 Web 应用程序时,我遇到了一个相当有趣的案例。最重要的是,我需要获得手机用户(特别是 iPhone 用户)的许可(或拒绝)......

在为 Telegram 开发 Web 应用程序时,我遇到了一个相当有趣的案例。

最重要的是,我需要在第一个应用程序上获得手机用户(特别是 iPhone 用户)的许可(或拒绝),并且我可以使用手机的加速度计来识别某些事件。

本地 - 它可以工作(如果有人感兴趣,可以使用 zrok 作为层,因为 Telegram 不会在没有证书的情况下打开本地版本)

但是,部署后,iPhone 上的工作没有任何停止。Android 上的情况要好得多)

以下是我为了明确获得 iPhone 所有者的许可而编写的代码部分......


  async approve(): Promise<boolean> {
    if (typeof this._approved === 'undefined') {
      if (!('DeviceMotionEvent' in window)) return (this._approved = false)
      try {
        type PermissionRequestFn = () => Promise<PermissionState>
        type DME = typeof DeviceMotionEvent & { requestPermission: PermissionRequestFn }
        if (typeof (DeviceMotionEvent as DME).requestPermission === 'function') {
          const permissionState = await (DeviceMotionEvent as DME).requestPermission()
          this._approved = permissionState === 'granted'
        } else this._approved = true
      } catch {
        this._approved = false
      }
    }
    return this._approved
  }
export const Home = observer(() => {

  const { x, y, z } = useShake()
  const shaker = new Shake({ threshold: 5, timeout: 50 })

  const handleApproval = (evt: React.MouseEvent<HTMLButtonElement>) => {
    evt.preventDefault()

    shaker.approve()
  }



  const { handleSuccessHaptic } = useHaptic()

  useEffect(() => {
      shaker.addEventListener('shake', () => {
      game.onClick()
      handleSuccessHaptic()
    })

    shaker.start()

    return () => {
      shaker.stop()
    }
  }, [handleSuccessHaptic, shaker])

  const handleClicks = () => {
    console.log('It work')
  }

 
  return (
    <div className={'flex flex-col gap-10'}>
     
          <Button className={'w-full'} onClick={handleApproval}>
        GET APPROVE
      </Button>

      <ul>
        <li>X: {x}</li>
        <li>Y: {y}</li>
        <li>Z: {z}</li>
      </ul>
    </div>
  )
})
帖子版权声明 1、本帖标题:如何在 TS 上从 Iphone 访问加速度计?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Melloware在本站《iphone》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我有几个 .crt 文件和 .provisionalprofile,我需要显示到期日期。尝试将 .crt 转换为数据并执行编码func getExpiryDate() { guard let url = Bundle.main.url(forResource:...

    我有几个 .crt 文件, .provisionalprofile 需要显示到期日期。

    尝试将 .crt 转换为数据并进行编码

    func getExpiryDate() {
      guard let url = Bundle.main.url(forResource: "sample", withExtension: "crt"), let data = try? Data(contentsOf: url) else {
         return
       }
       data.withUnsafeBytes { (bytes: UnsafePointer<UInt8>)->Void in
          if let dataPtr = CFDataCreate(kCFAllocatorDefault, UnsafePointer<UInt8>(bytes), data.count) {
            print(dataPtr)
            if let plistData = String(data: dataPtr as Data, encoding: .isoLatin1) {
        }
      }
     }
    }
    
返回
作者最近主题: