菜单

设置深度链接

 

 

开发者可以通过创建深度链接来将用户转到应用中的特定页面。如果用户已在设备上安装您的应用,SE SDK 会转向链接中指定的页面。用户通过链接打开应用后,SDK 就可以读取深度链接数据了,具体步骤如下:

注:此方法仅适用于iOS和Android

查看 SolarEngine 后台配置

universal link 示例为:test1.link.solar-engine.com

URL Scheme 示例为:test1://

配置深度链接

 

iOS  设置深度连接

在native/engine/ios/CMakeLists.txt 中添加如下代码

// 找到这行
set(CC_ALL_SOURCES)

// 添加
list(APPEND CC_PROJ_SOURCES
    ${CMAKE_CURRENT_LIST_DIR}/SolarEngineSDK/iOS/SECocosCreatorProxyApi.h
    ${CMAKE_CURRENT_LIST_DIR}/SolarEngineSDK/iOS/SECocosCreatorProxyApi.mm
    ${CMAKE_CURRENT_LIST_DIR}/SolarEngineSDK/iOS/SECCAppDelegate.h
    ${CMAKE_CURRENT_LIST_DIR}/SolarEngineSDK/iOS/SECCAppDelegate.m
)
  native/engine/ios/Post-service.cmake 中添加
if(IOS)
    # Supported for .framework
    cs_neteaseyidun_append_string_property(${CC_TARGET_NAME} XCODE_ATTRIBUTE_FRAMEWORK_SEARCH_PATHS ${CMAKE_CURRENT_LIST_DIR}/SolarEngineSDK/iOS/Frameworks)

    cs_neteaseyidun_append_string_property(${CC_TARGET_NAME} XCODE_ATTRIBUTE_OTHER_LDFLAGS "-ObjC -fprofile-instr-generate -lz -lc++")
    target_link_libraries(${CC_TARGET_NAME} "-framework SolarEngineSDK")
    target_link_libraries(${CC_TARGET_NAME} "-framework SESDKRemoteConfig")
    target_link_libraries(${CC_TARGET_NAME} "-framework AdSupport")
    target_link_libraries(${CC_TARGET_NAME} "-framework AdServices")
    target_link_libraries(${CC_TARGET_NAME} "-framework Security")
    target_link_libraries(${CC_TARGET_NAME} "-framework CoreTelephony")


    # deeplink 
    set_target_properties(${CC_TARGET_NAME} PROPERTIES
        # URL Scheme
        MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist"
        
        # universal link
        XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Automatic"  # Automatic表示打包使用自动签名
        XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "你开发者账号的TeamID"        
        XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/SolarEgine.entitlements"
    )
endif()

配置URL Scheme
 在 native/engine/ios/Info.plist 中添加
示例如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

	....


	// deeplink-start
	<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>CFBundleURLName</key>
			<string>solarengine</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>test1</string>
			</array>
		</dict>
	</array>
	// deeplink-end
</dict>
</plist>

   添加后CocosCreator重新导出 iOS工程后能看到如下URL Types

 

配置 universal link 
 在 native/engine/ios/ 目录下创建一个SolarEgine.entitlements文件
array里面的为您的universal link 链接,需要以applinks开头
示例如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple.developer.associated-domains</key>
	<array>
		<string>applinks:test1.link.solar-engine.com</string>
		<string>applinks:pro-test1.link.solar-engine.com</string>
	</array>
</dict>
</plist>

 

Android  设置深度连接

开发者可以通过创建深度链接来将用户转到应用中的特定页面。如果用户已在设备上安装您的应用,SE SDK 会转向链接中指定的页面。用户通过链接打开应用后,SDK 就可以读取深度链接数据了,具体步骤如下:

1.1 配置 URI Scheme

配置 AndroidManifest.xml

文件位置:native/engine/android/app/AndroidManifest.xm

如果用户已经安装了您的应用,那么在与包含深度链接信息的链接互动时,应用就会打开。SE SDK 能够解析深度链接信息,在应用中使用。要设置深度链接,请选择一个唯一的 Scheme 名称 。

开发者可以进行设置,在用户与深度链接互动时启动特定活动。为此请进行下列操作:

  1. 在您的 AndroidManifest.xml 文件中为活动指定 Scheme 名称 。
  2. 向活动定义添加一个 intent-filter 节点。
  3. 在 intent-filter 节点中添加一个包含 Scheme 名称的 android:scheme 数据节点。

以下示例展示了如何在AndroidManifest.xml文件中设置名为 AppActivity 的活动,并以 Scheme 名称 sedemo 将其打开。

 

示例如下

<activity
       android:name="com.cocos.game.AppActivity">
       <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
         <data android:scheme="sedemo" />
     </intent-filter>
</activity>

如果用户点击了如下连接,且该参数中包含您的 Scheme 名称 ,并且定义了其接受 URL Scheme 协议格式为scheme://yourhost:port/path,那么活动就会触发

示例 :sedemo://lionmobo.com/goods_detail?param1=value1&param2=value2

 

开发者需要在 AppActivity 的 onCreate 或 onNewIntent 方法,传递活动 intent 对象中的深度连接信息应用启动,且上述方法之一被调用后,您就可以读取深度链接内容了。然后您可以在应用的其他位置访问这些信息。

在 onCreate 或 onNewIntent 方法中调用 getData() 方法,以提取深度链接信息。

通过 onNewIntent 方法:
@Override
protected void onNewIntent(Intent intent) {
   super.onNewIntent(intent);

   Uri data = intent.getData();
   // data.toString() -> deeplink具体信息.
}
通过 onCreate 方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   Intent intent = getIntent();
   Uri data = intent.getData();
   // data.toString() -> deeplink具体信息.
}

1.2 配置App Links

根据App Links的官方定义,App Links是一种特殊的DeepLink(与URL Scheme调起App的实现方式不同),当点击你的网站链接的时候能够调起你的App,不出现选择界面, 也不会出现类似URL Scheme的重复问题,此种方式不支持在浏览器中调起

检查 assetlinks.json

在浏览器中输入https://{domain}/.well-known/assetlinks.json, 查看是否能正常下载assetlinks.json文件
其中,domain是您再SE后台配置好的域名,如:tlink.solar-engine.com

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "开发者应用唯一包名",
    "sha256_cert_fingerprints":
    ["开发者应用的sha256_cert_fingerprints"]
  }
}]

配置 AndroidManifest.xml

<activity
            android:name=".activity.SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:scheme="https"
                    android:host="开发者在SE后台配置的域名"
                    android:pathPattern="开发者在SE后台配置的路径地址" />
            </intent-filter>
 </activity>
要对用户进行再归因,请在 APP 收到深度链接内容时调用 SESDK 的 appDeeplinkOpenURI 方法,SESDK 就会在深度链接中寻找新的归因信息。如果 SESDK 找到新信息,会将其转发至服务器进行再归因。
 
方法示例:
public void appDeeplinkOpenURI(Uri uri);

调用示例:

@Override
protected void onNewIntent(Intent intent) {
   super.onNewIntent(intent);

   Uri data = intent.getData();
   if(data != null) {
      SolarEngineManager.getInstance().appDeeplinkOpenURI(data);
   }
}

 

设置 deeplink 链接监听 (需要在SDK 初始化之前调用)

设置deeplink监听在cocos项目中设置

调用示例:

solarengine.deeplinkCallback((result) => {
    let code = result.code
    if (code == 0) {
        console.log("deeplinkCallback success ...")
        let data = result.data
        console.log(JSON.stringify(data))
    } else {
        console.log("deeplinkCallback fail ...")
        console.log(code)
    }
})

let appkey = ""
solarengine.preInitSDK(appkey)
let config = {
    "logEnabled": true
};
solarengine.initSDK(appkey, config)

 

deeplink data 类参数详解:
参数名称 参数含义 参数类型
sedpLink 跳转参数 String
turlId 7位短链 String
from 链接类型 String
customParams 自定义参数 Map<String,Object>
 

errorCode 错误码:

错误码 code码释义
0 成功
1 URI 为空
2 URI 非法
 
最近修改: 2025-04-09Powered by