开发者可以通过创建深度链接来将用户转到应用中的特定页面。如果用户已在设备上安装您的应用,SE SDK 会转向链接中指定的页面。用户通过链接打开应用后,SDK 就可以读取深度链接数据了,具体步骤如下:
查看 SolarEngine 后台配置
universal link 示例为:test1.link.solar-engine.com

URL Scheme 示例为:test1://

Android 配置 Scheme
配置Scheme
?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:theme="@style/UnityThemeSelector" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="place_your_scheme_here" />
</intent-filter>
</activity>
</application>
</manifest>
iOS 配置 URL Scheme 和 Universal Link
请见 设置深度链接 文中 "配置 Universal Link" 以及 "配置URL Scheme" 部分
通过深度链接进行再归因
要对用户进行再归因,请在 APP 收到深度链接内容时调用 appDeeplinkOpenURL 方法,SDK 会在深度链接中寻找新的归因信息。如果 SDK 找到新信息,会将其转发至服务器进行再归因。
function appDeeplinkOpenURL(){
let urlString:string = "https://your_deeplink_url_dummy";
SolarEngine.appDeeplinkOpenURL(urlString);
}
调用时机
import React, { Component } from 'react';
import { Linking, Platform, Text, View } from 'react-native';
class App extends Component {
componentDidMount() {
// 检查应用是否是通过URL打开的初始URL
Linking.getInitialURL().then((url) => {
if (url) {
console.log('Initial URL:', url);
// 在这里可以处理初始URL,比如解析参数等操作
SolarEngine.appDeeplinkOpenURL(url);
}
});
// 监听URL变化事件
Linking.addEventListener('url', (event) => {
console.log('Received URL:', event.url);
// 处理接收到的URL
SolarEngine.appDeeplinkOpenURL(url);
});
}
render() {
return (
<View>
<Text>React Native Linking Example</Text>
</View>
);
}
}
export default App;
接收deeplink回调
当SDK解析完deeplink url后会回调,您可以使用回调参数处理一些业务逻辑
注:回调方法请在初始化SDK前设置,否则会接受不到回调。
调用示例
function buildDeeplinkResponse():deeplink{
const handleDeepLink: deeplink = (code:number,deepLinkInfo?: DeepLinkInfo) => {
if(code === 0){
if(deepLinkInfo){
console.log("deepLinkInfo.sedpLink: " + deepLinkInfo.sedpLink);
}
}else{
console.log("code: " + code);
}
};
return handleDeepLink;
}
async function Initiate(){
let appKey = "";
if (Platform.OS === 'ios') {
appKey = "your_iOS_appKey";
} else if (Platform.OS === 'android') {
appKey = "your_Android_appKey";
}
let deeplink:deeplink = buildDeeplinkResponse();
let initiateOptions:SolarEngineInitiateOptions = {
...
deeplink:deeplink,
...
}
SolarEngine.initialize(appKey,initiateOptions,(result:InitiateCompletionInfo) => {
if (result.success) {
Alert.alert('SolarEngine SDK Initiate Complete!')
}
});
}
上报deeplink唤醒事件(re_engagement)
注:如果调用了 appDeeplinkOpenURL 接口,则无需调用 trackAppReEngagement: 方法
方法示例
export function trackAppReEngagement(customProperties:Object);
调用示例:
let customProperties:Object = { ... };
SolarEngine.trackAppReEngagement(customProperties);