1. 分享(选接)

分享功能支持分享文本、链接、图片等媒体文件,分享类型详见ShareType,目前支持以下几种类型:

  • SFShareContent.ShareType.TEXT:文本
  • SFShareContent.ShareType.IMAGE:图片
  • SFShareContent.ShareType.AUDIO:音频
  • SFShareContent.ShareType.VIDEO:视频
  • SFShareContent.ShareType.FILE:文件

游戏在游戏内需要调用 Android 系统原生分享功能时,可以调用该方法,该功能不能明确知道用户分享结果。代码示例如下:

SFShareContent shareContent = new SFShareContent.Builder()
        .setShareTitle(title)
        .setShareContent(content)
        .setShareUrl(url)
        .setShareType(SFShareContent.ShareType.TEXT)
        .build();
SFPlatform.getInstance().shareNative(activity, shareContent, new SFRequestListener() {
    @Override
    public void onSuccess() {
    }

    @Override
    public void onFailed(int code, String message) {
    }
});

SFShareContent 数据结构如下:

参数名称 参数类型 是否可为空 说明
shareTitle String 分享的标题
shareContent String 分享的内容
shareUrl String 分享的链接
shareUris List 分享的图片等媒体文件的 Uri 集合
shareType String 分享的类型,详见 ShareType
sharePlatform String 分享的平台,详见 SharePlatform
pageId String Facebook 分享关联的页面 ID
placeId String Facebook 分享标记的地点 ID
shareHashtag String Facebook 分享的话题标签

sharePlatform 可以通过 SharePlatform 类指定:

  • SFShareContent.SharePlatform.Facebook:分享到 Facebook,仅支持链接、图片和视频分享
  • SFShareContent.SharePlatform.Instagram:分享到 Instagram
  • SFShareContent.SharePlatform.LINE:分享到 LINE
  • SFShareContent.SharePlatform.KakaoTalk:分享到 KakaoTalk

1.2 邀请码分享案例

分享链接:http://share.ludolandgame.com/ludoland.html 输入好友邀请码领取福利: 123456

被邀请人打开网页,先尝试打开手机端 APP,若 APP 未安装,则判断手机平台,若是 iPhone 则跳转 App Store,否则跳转 Google play 商店。

2. 评分(选接)

2.1 自定义评分

游戏在游戏内需要引导用户进行自定义弹窗评分时,可以调用该方法,该功能不能直接将评分数据展示在 Google Play,当用户的评分大于阈值时会跳转到 Google Play 的应用详情页面。该方法不提供 UI,需要游戏自定义 UI,用户完成评分后将分值和评论内容传入该方法:

SFPlatform.getInstance().launchGameCustomReview(score, comment, listener);

2.2 Google Play 评分

游戏在游戏内需要引导用户进行评分提交 Google Play 商店的评分和评价时,可以调用该方法:

SFPlatform.getInstance().launchInAppReview(activity, listener);

为了提供优质用户体验,Google Play 会强制执行一个限时配额,用于规定系统向用户显示评价对话框的频率。由于存在此配额,在短时间内(例如,不到一个月内)多次调用该方法时可能不会始终显示对话框。

3. 反馈(选接)

游戏在游戏内需要引导用户进行反馈(比如评分低于5分、反馈Bug、卸载挽留)时,可以调用该方法:

SFPlatform.getInstance().submitFeedback(feedbackType, stars, content, new SFRequestResultListener<Void>() {
    @Override
    public void onSuccess(Void data) {

    }

    @Override
    public void onFailed(int code, String message) {

    }
});
  • feedbackType:用户反馈类型,可以通过 FeedbackType 类指定:
    • FeedbackType.InGame:在游戏中反馈
    • FeedbackType.Rating:在评分时反馈
    • FeedbackType.Uninstall:在卸载挽留时反馈
    • FeedbackType.Shortcuts:在打开快捷方式时反馈
  • stars:用户评分(数值),feedbackType传FeedbackType.Rating时需要传入
  • content:用户反馈内容

4. 预注册(选接)

[!WARNING] 预注册功能仅限在Google play商店上架的游戏接入。

4.1 接入必读

玩家第一次进入游戏后就调用当前接口,并把数据存储到游戏服上。给玩家标记预注册来源,发放奖励可以到后续流程的环节异步触发

4.2 方法说明

预注册的用户在游戏内领取预注册奖励,可以调用该方法。只有成功领取预注册奖励时会将预注册订单信息返回给游戏,游戏端负责给用户发放奖励。代码示例如下:

SFPlatform.getInstance().preRegistration(activity, new SFRequestResultListener<String>() { 
    @Override 
    public void onSuccess(String data) { 
        // data 为 Json 格式的预注册订单信息,只有成功领取预注册奖励时才有值 
    }
    @Override 
    public void onFailed(int code, String message) { 
    } 
});

4.3 Demo 案例

Image
Figure: Image

4.4 测试方案

  1. 测试账号可以通过重复操作点击预注册,取消预注册,来重复获取预注册订单,方便测试同账号不同设备不同场景下是否存在问题
  2. 埋点 sdk_pre_registration:预注册,会记录当前 uid 和预注册订单数据

4.5 预注册用户数据分析

用埋点的数据进行数据分析,减少网络环境带来的数据误差

5. 退款警告(选接)

在游戏内需要检查用户是否有退款行为时,可以调用该方法。如果查询到用户有退款行为时,会直接弹出退款警告弹出,或者将退款信息返回给游戏,游戏端负责给展示退款警告信息。退款警告支持有界面和无界面两种方式:

  • 退款警告(有界面)

    SFPlatform.getInstance().checkRefund(activity);
    
  • 退款警告(无界面)

    SFPlatform.getInstance().checkRefund(activity, new SFResultListener<SFRefund>() { 
      @Override 
      public void onResult(SFRefund result) { 
          // 游戏接收到退款信息时,需要向用户展示退款警告信息 
      } 
    });
    

SFRefund 数据结构如下:

参数名称 参数类型 是否可为空 说明
amount Double 累计退款金额
message String 退款警告提示语

6. 文本翻译(选接)

在游戏内需要将文本翻译为指定语言时,可以调用该方法,传入需要翻译的文本和目标语言,会返回翻译后的结果。代码示例如下:

SFPlatform.getInstance().translate(text, targetLanguage, new SFRequestResultListener<SFTranslateText>() {
    @Override
    public void onSuccess(SFTranslateText data) {
        // 翻译成功
        String resultText = data.getResultText();
    }

    @Override
    public void onFailed(int code, String message) {
        // 翻译失败
    }
}); // targetLanguage可传入en、en-US等格式

SFTranslateText 数据结构如下:

参数名称 参数类型 是否可为空 说明
originalText String 原始文本
resultText String 翻译后的文本
targetLanguageCode String 目标语言编码

7. 敏感词校验(选接)

在游戏内需要校验文本是否包含敏感词时,可以调用该方法,传入需要校验的文本,会返回屏蔽敏感词的文本和状态码。代码示例如下:

SFPlatform.getInstance().checkSensitiveWords(text, new SFRequestResultListener<SFSensitiveWords>() {
    @Override
    public void onSuccess(SFSensitiveWords data) {
        // 校验成功
        String resultText = data.getResultText();
    }

    @Override
    public void onFailed(int code, String message) {
        // 校验失败
    }
});

SFSensitiveWords 数据结构如下:

参数名称 参数类型 是否可为空 说明
status Int 状态码(0-正常;1-包含敏感词)
originalText String 原始文本
resultText String 屏蔽敏感词的文本

8. 启动画面

游戏需要在启动时显示启动画面的,可以通过以下方法实现,目前支持SOHISOFISH自定义启动画面。SOHI和SOFISH启动画面支持深色模式(黑色背景浅色图标)和浅色模式(白色背景深色图标),自定义启动画面需要游戏传入启动图标和背景颜色。

8.1 SOHI启动画面

  • 展示启动画面(需要手动关闭)

    SFPlatform.getInstance().getUIService().showSplashScreenForSohi(activity, isDarkMode);
    
  • 展示启动画面(展示设置的时长后自动关闭)

    SFPlatform.getInstance().getUIService().showSplashScreenForSohi(activity, isDarkMode, duration);
    

8.2 SOFISH启动画面

  • 展示启动画面(需要手动关闭)

    SFPlatform.getInstance().getUIService().showSplashScreenForSofish(activity, isDarkMode);
    
  • 展示启动画面(展示设置的时长后自动关闭)

    SFPlatform.getInstance().getUIService().showSplashScreenForSofish(activity, isDarkMode, duration);
    

8.3 自定义启动画面

  • 展示启动画面(需要手动关闭)

    SFPlatform.getInstance().getUIService().showSplashScreen(activity, drawable, backgroundColor);
    
  • 展示启动画面(展示设置的时长后自动关闭)

    SFPlatform.getInstance().getUIService().showSplashScreen(activity, drawable, backgroundColor, duration);
    

8.4 关闭启动画面

没有设置展示时长的启动画面需要游戏调用以下方法关闭启动画面:

SFPlatform.getInstance().getUIService().hideSplashScreen();

9. 请求应用更新

游戏需要检查是否有新版本时,可以通过以下方法请求版本更新内容,该功能集成了Google Play应用内更新功能(需要添加依赖项),代码示例如下:

SFPlatform.getInstance().requestAppUpdate(currentVersion, new SFAppUpdateListener() {
    @Override
    public void shouldShowAppUpdatePrompt(SFAppUpdateInfo appUpdateInfo) {
        // 展示版本更新内容提示弹窗(强制更新时不允许关闭/取消弹窗)
        boolean forceUpdate = appUpdateInfo.isForceUpdate();
        // 如果是软更,用户选择跳过更新时应该通知SDK
        appUpdateInfo.skipSoftUpdate();
    }

    @Override
    public void shouldShowAppInstallPrompt(SFConsumer<Boolean> consumer) {
        // 展示引导用户安装提示弹窗(应用内更新下载完成时引导用户安装)
        consumer.accept(true); // 传入用户是否允许安装
    }

    @Override
    public void noUpdateAvailable() {
        // 没有可用更新
    }
});

参数说明:

  • currentVersion:当前应用版本,支持versionCode和versionName,只能包含数字和点,如:10、1.2.0

SFAppUpdateInfo 数据结构如下:

参数名称 参数类型 是否可为空 说明
enabled boolean 控制是否允许更新(全局开关)
title String 更新弹窗的标题(可自定义)
message String 更新弹窗的提示语
storeUrl String 应用商店协议地址
fallbackUrl String 备用下载地址(应用商店协议地址为空或无法打开时需打开备用下载地址)
latestVersion String 当前最新版本号(不配置则不触发软更)
minRequiredVersion String 最低兼容版本(当前版本低于此版本则触发强制更新)
forceUpdateVersions Set<String> 特定强制更新版本列表(即使版本号高于最低要求,只要在列表中,依然触发强制更新)
  • enabled:控制是否允许更新(全局开关)
  • title:更新弹窗的标题(可自定义)
  • soft_message:软更的提示语(建议更新,可取消)
  • hard_message:强更的提示语(强制更新,不可取消)
  • store_url:应用商店协议地址
  • fallback_url:备用下载地址
  • latest_version:当前最新版本号(不配置则不触发软更)
  • min_required_version:最低兼容版本(当前版本低于此版本则触发强制更新)
  • force_update_versions:特定强制更新版本列表(即使版本号高于最低要求,只要在列表中,依然触发强制更新)

10. 其他接口(选接)

10.1 获取SDK版本号

SFPlatform.getInstance().getSdkVersion();

10.2 获取SDK设备 ID

SFPlatform.getInstance().getDeviceID();

10.3 打开网页

  • 通过浏览器打开 Url
    SFPlatform.getInstance().openBrowser(url);
    

10.4 判断游戏社区是否支持

该功能用于判断游戏社区是否支持,例如 Line、Discord、Facebook、Instagram、Twitter 等:

SFPlatform.getInstance().isCommunitySupported(communityType);

10.5 添加/移除网络状态改变监听

该功能用于监听设备网络状态改变:

// 添加网络状态改变监听
SFPlatform.getInstance().addNetworkStateListener(listener);

// 移除网络状态改变监听
SFPlatform.getInstance().removeNetworkStateListener(listener);

10.6 添加/移除玩家登录状态改变监听

该功能用于监听玩家登录状态改变:

// 添加玩家登录状态改变监听
SFPlatform.getInstance().addAuthenticationStatusListener(listener);

// 移除玩家登录状态改变监听
SFPlatform.getInstance().removeAuthenticationStatusListener(listener);

10.7 获取当前服务器时间

该功能用于获取当前服务器时间:

SFPlatform.getInstance().requestServerTime(new SFRequestResultListener<Long>() {
    @Override
    public void onSuccess(Long serverTime) {

    }

    @Override
    public void onFailed(int code, String message) {

    }
});

10.8 冷启动过程分析

该功能用于游戏冷启动过程分析:

SFPlatform.getInstance().trackAppLaunchState(appLaunchState);

appLaunchState 是指要游戏冷启动过程中的某个步骤,可以通过 SFAppLaunchState 类指定:

  • SFAppLaunchState.CocosInit:Cocos游戏初始化开始
  • SFAppLaunchState.CocosReady:Cocos游戏初始化完成
  • SFAppLaunchState.UnityPlayerInit:Unity游戏初始化开始
  • SFAppLaunchState.UnityPlayerReady:Unity游戏初始化完成
  • SFAppLaunchState.LoadJNILibsStart:游戏动态链接库加载开始
  • SFAppLaunchState.LoadJNILibsEnd:游戏动态链接库加载结束

results matching ""

    No results matching ""