自2022年9月6日起,本文档站不再更新内容,相关文档已迁移至全新“抖音开放平台”前往

API

API 模板 Unity 工程使用时出现疑问可以参考接口用法。

可以通过运行本地 apk 体验各接口功能(使用 appid :tt9a4aecf7057074ae)

大部分接口和普通小游戏共用同个或相似能力:https://microapp.bytedance.com/docs/zh-CN/mini-game/develop/api/mini-game/bytedance-mini-game,可以作为参考

1.广告

开通:https://microapp.bytedance.com/docs/zh-CN/mini-app/develop/functional-plug-in/advertising-component-access-guide/flow-main-open-process/

要使用正确的广告 id,在对应的 appid 下进行运行,才能正确播放广告。

通过 StarkSDK.API.GetStarkAdManager() 获取广告模块
  • 激励视频:只支持一个实例的激励视频播放。
StarkSDK.API.GetStarkAdManager().ShowVideoAdWithId();
  • Banner 广告:支持多个实例,一个页面可以展示多个实例
StarkSDK.API.GetStarkAdManager().CreateBannerAd();

位置计算:

  • 在横屏下创建时的宽度范围是[128dp,208dp],可以使用 Resize 函数调整位置和宽度
  • 在竖屏下可以创建的宽度范围是[0.8W,1.0W],W 为屏幕宽度,创建后宽度不可修改。
  • banner 广告 top 值的取值范围是[0,H-h],其中 H 为屏幕高度,h 为 banner 的高度。
  • banner 广告 left 值的取值范围是[0,W-w],其中 W 为屏幕宽度,w 为 banner 的宽度。
  • 如果输入的位置不在上述位置范围内将被限制在上述范围内。

将 banner 广告放在屏幕底部中央的示例如下:

private int px2dp(int px) => (int)(px * (160 / Screen.dpi));
StarkAdManager.BannerStyle m_style = new StarkAdManager.BannerStyle();
StarkAdManager.BannerAd m_bannerAdIns = null;
void createBanner()
{
    m_style.width = 320;
    m_style.left = 10;
    m_style.top = 100;
    m_bannerAdIns = StarkSDK.API.GetStarkAdManager().CreateBannerAd("your ad id", m_style, 60,
                    OnAdError, OnBannerLoaded, OnBannerResize);
    //m_style.height为只读,其值将由StarkSDK自动更新
}

void OnBannerLoaded()
{
    if (m_bannerAdIns != null)
        m_bannerAdIns.Show();
}

void changeStyle()
{
    int w = m_style.width;                //获取banner宽度大小
    int h = m_style.height;               //获取banner高度大小
    int sw = px2dp(Screen.width);         //获得屏幕宽度(dp)
    int sh = px2dp(Screen.height);        //获得屏幕高度(dp)

    m_style.top = sh - h;                //底部
    m_style.left = sw / 2 - w / 2;       //中央
    m_style.width = w;

    m_bannerAdIns.ReSize(m_style);        //使用Resize函数调整位置和大小

}
  • 插屏广告:支持多个实例,每个页面只能展示一个实例,每个实例只能展示一次,销毁后可以再次创建。
/// 创建并播放插屏广告,在广告模块启动15s内不允许展示插屏广告,在任何地方调用API.GetStarkAdManager,就会启动广告模块
/// 两个插屏广告展示间隔不能少于30s
/// 插屏广告支持多实例。简单回调设置,插屏广告完成和错误的回调函数
/// 插屏广告实例只支持展示一次,出现加载错误,或 展示成功,点击关闭按钮或视频广告外的其他地方,广告实例都会自动销毁。下一次需再次创建。
/// 提供接口可以手动销毁
/// 错误码由sdk传出,原因参考
/// https://microapp.bytedance.com/docs/zh-CN/mini-game/develop/open-capacity/ads/tt-create-interstitial-ad
var m_InterAdIns = StarkSDK.API.GetStarkAdManager().CreateInterstitialAd();

void LoadInterstitialAd();
{
  if (m_InterAdIns != null) m_InterAdIns.Load();
  else {
    PrintText("插屏AD未创建");
  }
}

void ShowInterstitialAd();
{
  PrintText("显示插屏AD");
  if (m_InterAdIns != null) m_InterAdIns.Show();
  else {
    PrintText("插屏AD未创建");
  }
}

void DestoryInterstitialAd();
{
  PrintText("销毁插屏AD");
  if (m_InterAdIns != null) m_InterAdIns.Destory();
  m_InterAdIns = null;
}

支持多个实例,每个页面只能展示一个实例,每个实例只能展示一次,销毁后可以再次创建。

注意:广告是由网络请求,再到播放的过程,过程中会有失败的情况。开发者在广告开发时应始终注册 onError 方法的监听,保证对所有广告异常情况的处理。广告错误码说明

关闭广告提示 toast:

StarkAdManager.IsShowLoadAdToast = false;

2.录屏

StarkSDK.API.GetStarkGameRecorder().StartRecord(
  m_IsRecordAudio,
  m_MaxRecordTime,
  OnRecordStart,
  OnRecordError,
  OnRecordTimeout
);

录屏分享是抖音下重要的分发入口,因此接入游戏视频的录制、编辑功能对游戏来说非常重要。

  • 支持游戏录制,及在抖音,头条下的分享。
  • 支持传入一系列的时间片段,对录制后的视频进行剪辑。
  • 分享时会利用抖音/头条 编辑发布器,可以对视频进行后期处理

3.绑定抖音号

StarkSDK.API.FollowDouYinUserProfile(OnFollowAwemeCallback, OnFollowAwemeError);

支持用户在游戏内跳转到游戏开发者在开发者平台上绑定的抖音账号。

  • 引导用户关注开发者自己的抖音号,可持续进行游戏内容的推广和运营。
  • 由于关注信息涉及用户信息,所以目前只能跳转,无法从回调函数里获取到是否已关注的信息

4.创建快捷方式

StarkSDK.API.CreateShortcut(OnCreateShortcut)

void OnCreateShortcut(bool bSuccess)
{
    PrintText("OnCreateShortcut : {0}", bSuccess);
}

创建快捷方式在不同手机下表现不同,如果权限被禁用,会显示 在设置中打开权限的引导框。

5.分享

StarkSDK.API.GetStarkShare();

可以分享内容到头条圈或抖音

注:如果只是视频分享,可以直接调用 StarkSDK.API.GetStarkGameRecorder().ShareVideo、StarkSDK.API.GetStarkGameRecorder().ShareVideoWithTitleTopics 接口。不需要调用 StarkSDK.API.GetStarkShare()接口。

StarkSDK.API.GetStarkShare()是一个通用的分享接口,它可以分享视频,也可以分享其它类型的内容,具体参考小程序开发文档,不过就需要自己封装 Json 参数。

该接口使用示例,以视频分享作为示例:·

参考小程序通用分享接口参数说明,视频分享参数可以是如下 Json 内容:

{
  "channel": "video",
  "title": "Some Title",
  "extra": {
    "videoPath": "/path/to/video_name.mp4",
    "videoTopics": ["Some Topic1", "Some Topic2"],
    "hashtag_list": ["Some Topic1", "Some Topic2"]
  }
}

在 C#代码内,封装 Json 数据并调用分享接口如下:

using UNBridgeLib.LitJson;
JsonData shareJson = new JsonData();
shareJson["channel"] = "video";
shareJson["title"] = "Some Title";
shareJson["extra"] = new JsonData();
shareJson["extra"]["videoPath"] = "/path/to/video_name.mp4";
JsonData videoTopics = new JsonData();
videoTopics.SetJsonType(JsonType.Array);
videoTopics.Add("Some Topic1");
videoTopics.Add("Some Topic2");
shareJson["extra"]["videoTopics"] = videoTopics;
shareJson["extra"]["hashtag_list"] = videoTopics;
StarkSDK.API.GetStarkShare().ShareAppMessage(() =>
 {
 // Share succeed
 }, (errMsg) =>
 {
 // Share failed
 }, () =>
 {
 // Share cancelled
 },
 shareJson);

跳转到指定videoId的抖音视频,与分享后返回的videoId (需要在 shareJson中 带上 extraJson["withVideoId"] = true; )配合使用
StarkSDK.API.NavigateToVideoView(string videoId)

跳转到指定 videoId 的抖音视频,与分享后返回的 videoId (需要在 shareJson 中 带上 extraJson["withVideoId"] = true; )配合使用

StarkSDK.API.NavigateToVideoView(string videoId)

6.登陆

StarkSDK.API.GetAccountManager().Login(OnLoginSuccessCallback successCallback,
                           OnLoginFailedCallback failedCallback,
                           bool forceLogin = true)

使用当前宿主的登陆信息,如果没有登陆,则打开宿主的登陆页面进行登陆;

无法在当前宿主进行其他渠道的登陆。

7.支付

if (CanIUse.StarkPayService.RequestGamePayment)// 有版本需求
{
    Dictionary<string, object> orderInfoParams = new Dictionary<string, object>();
    orderInfoParams["mode"] = "game"; //支付的类型, 目前仅为"game"
    orderInfoParams["env"] = "0"; //环境配置,目前合法值仅为"0"
    orderInfoParams["currencyType"] = "CNY"; // 固定值: CNY。币种
    orderInfoParams["platform"] = "android"; //申请接入时的平台,目前仅为"android"
    orderInfoParams["buyQuantity"] = 1;
    //金币购买数量,金币数量必须满足:金币数量*金币单价 = 限定价格等级(详见下方 buyQuantity 限制说明。开发者可以在字节小游戏平台的“支付”tab 设置游戏币单价)
    orderInfoParams["customId"] = (TimeUtils.GetCurrentTimeMs() / 1000).ToString();
    //游戏开发者自定义的唯一订单号,订单支付成功后通过服务端支付结果回调回传
    StarkSDK.API.GetStarkPayService().RequestGamePayment(
        orderInfoParams,
        () =>
        {
            PrintText("Pay Success " + orderInfoParams["customId"]);
        },
        (errCode, errMsg) =>
        {
            PrintText("Pay failed - errCode: " + errCode + ", errMsg: " + errMsg, true);
        }
        );
}

接入字节小程序担保支付,需有版号。

8.打开客服页

StarkSDK.API.OpenCustomerServicePage(
    (flag) =>
    {
        if (flag)
        {
            PrintTextAppended("成功");
        }
        else
        {
            PrintTextAppended("失败");
        }
    });

接入小游戏客服消息能力

9.自定义事件

void StarkSDK.API.ReportAnalytics<T>(string eventName, System.Collections.Generic.Dictionary<string, T> param)

在小程序开发平台-数据分析-自定义分析 中添加事件。

使用接口上报事件

10.敏感词过滤

StarkSDK.API.SensitiveWordCheck(string word, Action<Boolean>checkSuccess, Action<string>checkFail)

过滤敏感词,需要网络,编辑器下可以直接使用测试

11.周边

可以根据 StarkSDK.s_ContainerEnv 获取宿主,启动入口,版本等相关信息。

可以设置 log 级别

可以设置在出错时是否显示 android 下的 toast

通过 StarkSDK.GameVersion 来获取游戏版本号,不要使用 Application.version

更多功能直接看代码里的接口说明

点击纠错
该文档是否对你的开发有所帮助?
有帮助
没帮助
该文档是否对你的开发有所帮助?
有帮助
没帮助