# iOS UE4 接入步骤

# 引入文件到项目中

解压缩 SDK 包,需要将 ZipArchive.embeddedframework.zip 添加到 PublicAdditionalFrameworks,将 libSlugSDK.a 添加到 PublicAdditionalLibraries,例如:

PublicAdditionalFrameworks.Add(
    new UEBuildFramework(
        "ZipArchive",
        "../ThirdParty/ZipArchive.embeddedframework.zip",
        "Resources/SlugSDK.bundle"
       )
);
var libPath = Path.GetFullPath(Path.Combine(ModuleDirectory, "../ThirdParty" ));
PublicAdditionalLibraries.Add(Path.Combine(libPath, "libSlugSDK.a"));
1
2
3
4
5
6
7
8
9

# 添加权限

为了支持长按保存图片(不支持长按保存 iframe 中的图片),需在 Info.plist 中添加配置项 NSPhotoLibraryAddUsageDescriptionNSPhotoLibraryUsageDescription

# 拼接用户参数

首先游戏客户端需在微社区首页 URL 上拼接以下参数:

参数名 描述 必须
openid 游戏的 openid 如果是 msdkv5 版本则必传
gameid_v5 msdkv5 分配的游戏的 gameid 如果是 msdkv5 版本则必传
areaid 账号类型:1(微信),2(QQ)
partition 区服 id,若无则传 0
platid 平台类型:0(iOS),1(Android)
roleid 角色 id
lng 用户当前位置:经度
lat 用户当前位置:纬度

示例一:

首页 URL:https://sy.qq.com/hyrzol/ingame/

拼接后 URL:https://sy.qq.com/hyrzol/ingame/?openid=xxx&gameid_v5=xxx&areaid=1&platid=0&partition=8195&roleid=2306687434798319382&lng=113.944527&lat=22.547869

示例二:

首页 URL:https://sy.qq.com/zhuoyao/ingame/?router=moment

拼接后 URL:https://sy.qq.com/zhuoyao/ingame/?router=moment&openid=xxx&gameid_v5=xxx&areaid=2&partition=0&platid=1&roleid=40520350780&lng=113.944527&lat=22.547869

# 打开微社区

参数说明:

/*
	url为微社区的首页地址,需参考"拼接用户参数",无需带MSDK登录态,SDK会自动调用MSDK的接口拼上登录态参数
	communitySupportedOrientations为微社区要支持的方向(1:只支持横屏,2:只支持竖屏,3:横竖屏都支持)
	red、green、blue、alpha为微社区的背景色,取值范围都为0 ~ 255,alpha取值:0(完全透明)~ 255(完全不透明);如果想使用默认的背景色(白色),就都传-1
	gameSupportedOrientations为游戏的方向(1:只支持横屏,2:只支持竖屏)
	returnCallback为从微社区返回到游戏的回调,可在这个回调里打开游戏的声音(建议在打开微社区之前先关闭游戏的声音,以免游戏的声音与微社区视频的声音同时存在)
*/
void openIngameCommunit(const char *url, int communitySupportedOrientations, int red, int green, int blue, int alpha, int gameSupportedOrientations, void (^returnCallback)(const char *));
1
2
3
4
5
6
7
8

使用示例:

#include "SlugSdk.h"

SlugSdkUe::SlugSdk::openIngameCommunit("https://ssr.sy.qq.com/gp/index?areaid=1&platid=0&partition=8195&roleid=2306687434798319382", 1, -1, -1, -1, -1, 1, ^(const char *response) {
	//response可能为NULL
});
1
2
3
4
5

# 添加横竖屏切换功能

如果横屏游戏需要竖屏的微社区,或者竖屏游戏需要横屏的微社区,就需要在IOSAppDelegate.cpp中做如下特殊处理:

#import "IngameCustomNSURLProtocol.h"

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    if ([IngameCustomNSURLProtocol isIngameBrowserViewController]) /*微社区支持所有方向,其他的跟游戏的方向保持一致*/
        return UIInterfaceOrientationMaskAll;
		
	...
    return ...;
}
1
2
3
4
5
6
7
8
9
10