当前位置: 首页 > article >正文

【每日学点鸿蒙知识】广告ID、NFC手机充值、CSS支持语法、PC与模拟器交互、SO热更新等

1、HamonyOS 样机获取成功返回Oaid为00000000-0000-0000-0000-000000000000?

请求授权时需要触发动态授权弹窗,看一下是不是没有触发授权弹窗。
可以参考以下代码以及文档:

// ets
import identifier from '@ohos.identifier.oaid';
import hilog from '@ohos.hilog';
import { BusinessError } from '@ohos.base';
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
import common from '@ohos.app.ability.common';

@Entry
@Component
struct deviceDemo001 {

  build() {
    Column() {
      Text('测试')
        .width('100%')
        .backgroundColor('#131313')
        .height(50)
        .fontColor(Color.White)
        .onClick(()=>{
          const atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
          try {
            let context = getContext(this) as common.UIAbilityContext;
            atManager.requestPermissionsFromUser(context, ["ohos.permission.APP_TRACKING_CONSENT"]).then((data) => {
              if (data.authResults[0] == 0) {
                              identifier.getOAID((err: BusinessError, data: string) => {
                  if (err.code) {
                    hilog.error(0x0000, 'testTag', '%{public}s', `get oaid failed, error: ${err.code} ${err.message}`);
                  } else {
                    const oaid: string = data;
                                     }
                });
              } else {
                            }
            }).catch((err: BusinessError) => {
          
            })
          } catch(err) {
             }
        })
    }
  }
}

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/oaid-service-V5

开放匿名设备标识符(Open Anonymous Device Identifier, OAID,以下简称OAID):是一种非永久性设备标识符,基于开放匿名设备标识符,可在保护用户个人数据隐私安全的前提下,向用户提供个性化广告,同时三方监测平台也可以向广告主提供转化归因分析。

媒体App、广告平台、三方监测平台等开发者,可获取设备上的OAID,您可基于OAID进行个性化广告推荐或广告转化归因分析。

OAID是基于华为自有算法生成的32位类UUID(Universally Unique Identifier)标识符,格式为xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。
OAID的特性:

  • OAID是设备级标识符,同一台设备上不同的App获取到的OAID值一样。
  • OAID的获取受应用的“跨应用关联访问权限”开关影响:当应用的“跨应用关联访问权限”开关开启时,该应用可获取到非全0的有效OAID;当应用的“跨应用关联访问权限”开关关闭时,该应用仅能获取到全0的OAID。
  • 同一台设备上首个应用开启应用“跨应用关联访问权限”开关时,会首次生成OAID。

2、HarmonyOS 如何实现通过NFC实现手机给卡充值的功能?

需要的能力是使用NFC适配器建立连接,发送数据和接收数据,对应的业务场景就是使用NFC天线对公交进行充值,NFC读写CPU卡的部分,ISO-14443-4协议规范

标准NFC-Tag tag.TagInfo demo:

import tag from '@ohos.nfc.tag';
import UIAbility from '@ohos.app.ability.UIAbility';
import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import Want from '@ohos.app.ability.Want'

export default class EntryAbility extends UIAbility {
  onCreate(want : Want, launchParam: AbilityConstant.LaunchParam) {
    // add other code here...

    // want is initialized by nfc service, contains tag info for this found tag
    let tagInfo : tag.TagInfo | null = null;
    try {
      tagInfo = tag.getTagInfo(want);
    } catch (error) {
      console.error("tag.getTagInfo catched error: " + error);
    }
    if (tagInfo == null || tagInfo == undefined) {
      console.log("no TagInfo to be created, ignore it.");
      return;
    }

    // get the supported technologies for this found tag.
    let isNfcATag = false;
    let isIsoDepTag = false;
    for (let i = 0; i < tagInfo.technology.length; i++) {
      if (tagInfo.technology[i] == tag.NFC_A) {
        isNfcATag = true;
      }

      if (tagInfo.technology[i] == tag.ISO_DEP) {
        isIsoDepTag = true;
      }
      // also check for technology: tag.NFC_B/NFC_F/NFC_V/NDEF/MIFARE_CLASSIC/MIFARE_ULTRALIGHT/NDEF_FORMATABLE
    }

    // use NfcA APIs to access the found tag.
    if (isNfcATag) {
      let nfcA : tag.NfcATag | null = null;
      try {
        nfcA = tag.getNfcATag(tagInfo);
      } catch (error) {
        console.error("tag.getNfcATag catched error: " + error);
      }
      // other code to read or write this found tag.
    }

    // use getIsoDep APIs to access the found tag.
    if (isIsoDepTag) {
      let isoDep : tag.IsoDepTag | null = null;
      try {
        isoDep = tag.getIsoDep(tagInfo);
      } catch (error) {
        console.error("tag.getIsoDep catched error: " + error);
      }
      // other code to read or write this found tag.
    }
    // use the same code to handle for "NfcA/NfcB/NfcF/NfcV/Ndef/MifareClassic/MifareUL/NdefFormatable".
  }
}

3、HarmonyOS css 部分语法会被标红报错?

文件是web应用打包之后的css文件

因为目前IDE本身仅支持最基本的那部分CSS语法,所以在项目打开会看见报错标红,经过测试虽然会报错,但是不影响app的正常使用。

目前css支持的语法可以参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/js-framework-syntax-css-V5

4、如何将pc系统剪切板里的内容粘贴到模拟器?

  1. 总体思路通过在模拟器中访问PC端web页面的方式,来实现文本的复制粘贴。
  2. PC端开启web服务器
    1. 如果有现成的web服务器,把需要复制的文本文件放到web服务器下即可。
    2. macOS自带apache服务器(推荐)
      1. 启用服务:mac命令行执行sudo apachectl start服务启动后,使用PC浏览器访问http://127.0.0.1,能访问页面看到"It works!",说明服务启动成功。
      2. 修改需要复制的文本apache服务的文件根目录位于/Library/WebServer/Documents新建test.html文件,内容为需要复制的文本,拷贝到/Library/WebServer/Documents即可,PC端访问地址http://127.0.0.1/test
    3. windows可下载、运行nginx应用
      1. nginx文件根目录位于nginx/html,默认首页为index.html,修改文本内容即可

5、HarmonyOS 关于ArkTS及so热更新问题的咨询?

在Android中很多应用会有热更的需求,一般有两种方案:
一种是差分法,可以更新java代码和so代码以及一些资源文件;
另一种是通过hook的方式运行时加载包外的so。想询问一下HarmonyOS下是否有类似的机制,特别是是否允许从包外加载so
主要是为了解决已经上架的包有部分bug不容易简单修复,需要修改arkts或者C/C++代码, 但又不希望整包更换的情景

基于HarmonyOS应用统一分发的生态规则,不提供补丁的快速热修复功能,上述相关诉求,通过高效的上架审核和应用版本更新机制进行保障。


http://www.kler.cn/a/460500.html

相关文章:

  • js的一些处理
  • vue v-for 数据增加页面不刷新
  • 苍穹外卖04——Redis初入门 在店铺打烊or营业状态管理功能中的使用
  • wangEditor/editor自定义粘贴后续
  • 游戏引擎学习第69天
  • 黑马Java面试教程_P10_设计模式
  • 前端实现PDF预览的几种选择(pdfjs-dist、react-pdf、pdf-viewer)
  • 嵌入式科普(25)Home Assistant米家集成意味着IOT的核心是智能设备
  • 形象地理解UE4中的数据结构 TLinkedListBase
  • [极客大挑战 2019]LoveSQL 1解题思路
  • Java多线程中,synchronized和ReentrantLock的区别是什么?及使用场景有哪些?
  • html+css网页设计 美食 美食美客模版2个页面
  • python 选择排序(Selection Sort)
  • 纯前端实现将pdf转为图片(插件pdfjs)
  • 优化大肠杆菌菌株和发酵工艺以提高L-赖氨酸生产-文献精读94
  • 如何修复 WordPress 中的“Error establishing a database connection”问题
  • DeepSeek-V3-Base 模型技术解析
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之10 方案再探:特定于领域的模板 之1 随想交流
  • 口语笔记——感官+花费
  • MySQL数据库的锁
  • ubuntu 使用samba与windows共享文件[注意权限配置]
  • 留学生该如何进行文学分析类的essay写作
  • 分析电控发动机常见故障原因
  • vue使用el-select下拉框自定义复选框
  • IDEA修改编译版本
  • [2025] 如何在 Windows 计算机上轻松越狱 IOS 设备