二维码插件
二维码插件为您的应用程序提供了使用的二维码操作功能,包括打开二维码扫描器、显示二维码、自定义二维码图标以及位置标记颜色的方法。
二维码扫描器界面包含以下3个主要部分:
- 我的二维码:生成并显示二维码。
- 相册:从系统相册中选择二维码图片。
- 轻触照亮:打开设备的手电筒功能,在环境亮度较低时自动显示。
注意
对于 iOS 14.0+ 及 Android 14+ 的设备,如果应用在访问系统相册时受到限制,点击 相册 后仅显示玩家指定的照片。
受限访问的相册:
前提条件
2. iOS 配置
警告
对于使用 Unity 的 iOS 应用,实现二维码插件功能前请先完成 Game Center 的配置。
在项目的 Info.plist
文件中添加以下键和值:
UISupportsRightToLeft
:启用从右到左语言支持。CFBundleAllowMixedLocalizations
:允许应用程序使用混合语言本地化。PHPhotoLibraryPreventAutomaticLimitedAccessAlert
:防止弹出“有限照片访问”警告框。NSPhotoLibraryUsageDescription
:说明应用为何需要访问照片库。NSCameraUsageDescription
:说明应用为何需要使用相机。<plist version="1.0">
<dict>
<key>UISupportsRightToLeft</key>
<true/>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>PHPhotoLibraryPreventAutomaticLimitedAccessAlert</key>
<true/>
<key>NSPhotoLibraryUsageDescription</key>
<string>本应用需要访问您的照片库以便上传和分享照片。</string>
<key>NSCameraUsageDescription</key>
<string>本应用需要访问您的相机以拍摄照片或视频用于个人资料或内容发布。</string>
</dict>
</plist>
注册回调函数
添加以下回调处理:
- Unity
- Unreal Engine
// 添加回调函数
public void AddQRCodeObserver()
{
INTLAPI.AddQRCodeResultObserver(OnQRCodeResultEvent);
}
// 移除回调函数
public void RemoveQRCodeObserver()
{
INTLAPI.RemoveQRCodeResultObserver(OnQRCodeResultEvent);
}
// 处理 INTLQRCodeResult 回调事件
private void OnQRCodeResultEvent(INTLQRCodeResult qrCodeRet)
{
Debug.Log("OnQRCodeResultEvent");
string methodTag = "";
if (qrCodeRet.MethodId == (int)INTLMethodID.INTL_QRCODE_OPEN_SCANNER)
{
methodTag = "OpenQRScanner";
}
else if (qrCodeRet.MethodId == (int)INTLMethodID.INTL_QRCODE_SHOW)
{
methodTag = "ShowQRCode";
}
else if (qrCodeRet.MethodId == (int)INTLMethodID.INTL_QRCODE_SET_ICON)
{
methodTag = "SetIcon";
}
else if (qrCodeRet.MethodId == (int)INTLMethodID.INTL_QRCODE_SET_POSITION_MARKER_COLOR)
{
methodTag = "SetPositionMarkerColor";
}
}
// 添加回调函数
FINTLQRCodeEvent QRCodeEvent;
QRCodeEvent.AddUObject(this, &UQRCodeWindow::OnQRCodeResult_Implementation);
UINTLSDKAPI::SetQRCodeResultObserver(QRCodeEvent);
// 移除回调函数
UINTLSDKAPI::GetQRCodeResultObserver().Clear();
// 处理 FINTLQRCodeResult 回调事件
void UQRCodeWindow::OnQRCodeResult_Implementation(FINTLQRCodeResult qrCodeRet)
{
UE_LOG(LogTemp, Log, TEXT("==== OnQRCodeResultEvent"));
FString methodTag;
if (qrCodeRet.MethodId == INTL_QRCODE_OPEN_SCANNER)
{
methodTag = TEXT("OpenQRScanner");
}
else if (qrCodeRet.MethodId == INTL_QRCODE_SHOW)
{
methodTag = TEXT("ShowQRCode");
}
else if (qrCodeRet.MethodId == INTL_QRCODE_SET_ICON)
{
methodTag = TEXT("SetIcon");
}
else if (qrCodeRet.MethodId == INTL_QRCODE_SET_POSITION_MARKER_COLOR)
{
methodTag = TEXT("SetPositionMarkerColor");
}
}
OpenQRScanner
根据指定参数打开二维码扫描器。
qrCodeContent
:包含生成二维码所需信息的 JSON 字符串,可根据需求进行自定义
- Unity
- Unreal Engine
string qrCodeContent = "{\
\"deeplink\": \"https://example.com/path\", \
\"openid\": \"user-12345\", \
\"additionalKey1\": \"value1\"\
}";
INTLAPI.OpenQRScanner(qrCodeContent);
FString qrCodeContent = TEXT("{\"deeplink\":\"https://example.com/path\", "
"\"openid\":\"user-12345\", "
"\"additionalKey1\":\"value1\"}");
UINTLSDKAPI::OpenQRScanner(qrCodeContent);
ShowQRCode
显示指定的二维码内容。
qrCodeContent
:包含生成二维码所需信息的 JSON 字符串,可根据游戏需求进行自定义
- Unity
- Unreal Engine
string qrCodeContent = "{\
\"deeplink\": \"https://example.com/path\", \
\"openid\": \"user-12345\", \
\"additionalKey1\": \"value1\"\
}";
INTLAPI.ShowQRCode(qrCodeContent);
FString qrCodeContent = TEXT("{\"deeplink\":\"https://example.com/path\", "
"\"openid\":\"user-12345\", "
"\"additionalKey1\":\"value1\"}");
UINTLSDKAPI::ShowQRCode(qrCodeContent);
SetIcon
设置二维码中的自定义图标。
imageURL
:图标 URL
- Unity
- Unreal Engine
string imageURL = "https://example.com/icon.png";
INTLAPI.SetIcon(imageURL);
FString imageURL = TEXT("https://example.com/icon.png");
UINTLSDKAPI::SetIcon(imageURL);
SetPositionMarkerColor
设置二维码的位置标记颜色。
hexCode
:定位点颜色的十六进制字符串,如#FF5733
- Unity
- Unreal Engine
string hexCode = "#FF5733";
INTLAPI.SetPositionMarkerColor(hexCode);
FString hexCode = TEXT("#FF5733");
UINTLSDKAPI::SetPositionMarkerColor(hexCode);