欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Xinstall集成Android和iOS以及Web三端快速集成SDK与使用

程序员文章站 2024-01-08 10:36:40
前文知识:1、Xinstall是什么?2、Xinstall使用方法?功能概述Xinstall是一款可以提升App推广能力和数据统计的第三方SDK。集成xinstall SDK无需手动填写邀请码,自动建立社交关系携带参数安装下载App,,该SDK能在App推广过程中实现上下级关系绑定,从而达到无需手动填写邀请码即可自动识别邀请来源等功能,获取精准的统计数据。最终提高App安装率和转化率。XInstall 业务功能传递智能参数可以为APP的每一个安装自定义不同的初始化参数,安装后打开APP通过...

前文知识:

1、Xinstall是什么?
2、Xinstall使用方法?

功能概述

Xinstall是一款可以提升App推广能力和数据统计的第三方SDK。集成xinstall SDK无需手动填写邀请码,自动建立社交关系携带参数安装下载App,,该SDK能在App推广过程中实现上下级关系绑定,从而达到无需手动填写邀请码即可自动识别邀请来源等功能,获取精准的统计数据。最终提高App安装率和转化率。

XInstall 业务功能

  1. 传递智能参数
    可以为APP的每一个安装自定义不同的初始化参数,安装后打开APP通过Xinstall精准识别,自动追踪安装来源,支持小程序、二维码、网页、短信、海报等与APP参数互传。从而实现免填邀请码安装、场景还原等功能,为数据统计做准备。

  2. 渠道数据统计
    渠道通支持线上线下App渠道推广统计,广告效果统计,地推扫码统计等场景,渠道通可查看实时报表、实时排重,第一时间洞察渠道状况,助您灵活调整计划

  3. X闪装
    全程接管App安装流程,兼容各种社交平台与浏览器,大幅提升安装概率告别点击右上角,首次安装启动,直达指定场景页面减少用户操作步骤,优化用户下载安装体验,提升App推广渠道流量转化率

  4. Universal Link

解决微信登录Universal Link校验不通过,无法直达APP场景页面,一分钟完成苹果Universal Link配置,最简单的配置流程

Android集成SDK

Xinstall集成Android和iOS以及Web三端快速集成SDK与使用

1、下载并导入 SDK

  • 从下载中心下载 Android 最新版本 SDK
  • 从下载的文件中,将 aar 文件拷贝到项目的libs文件夹中,并使用 gradle 导入implementation files('libs/xinstall_vX.X.X.aar')

2、 初始化SDK
AndroidManifest.xml中添加权限声明:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 

AndroidManifest.xmlapplication 标签内设置 AppKey

<meta-data android:name="com.xinstall.APP_KEY" android:value="XINSTALL_APPKEY"/> 

备注: 将XINSTALL_APPKEY替换成 xinstall 为应用分配的appkeyApp 启动时,调用 XInstall.init(context) 方法完成 sdk 初始化

public class MyApplication extends Application {
  @Override
  public void onCreate() {
    super.onCreate();
    if (isMainProcess()) {
      // 初始化
      XInstall.init(this);
      // 启用log
      XInstall.setDebug(true)
    }
  }

  public boolean isMainProcess() {
    int pid = android.os.Process.myPid();
    ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
      if (appProcess.pid == pid) {
        return getApplicationInfo().packageName.equals(appProcess.processName);
      }
    }
    return false;
  }
} 

示例代码 在自定义 Application中初始化为例
备注: 当应用存在多个进程时,确保只在主进程进行初始化在 AndroidManifest.xml 中的 application 标签中添加 android:name=“.MyApplication" 指定自定义的Application类,以便程序启动的时候初始化自定义Application类,而不是系统默认的Application类

<application
  android:name=".MyApplication" android:allowBackup="false" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> ... </application> 

二、一键拉起

1、在AndroidManifest.xml的拉起页面activity标签中添加intent-filter(一般为MainActivity),配置scheme,用于浏览器中拉起

<activity android:name=".MainActivity" android:launchMode="singleTask"> <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="XINSTALL_SCHEME"/> </intent-filter> </activity> 

如果拉起页面和启动页是同一Activity,则AndroidManifest.xml的配置如下

 <activity android:name=".MainActivity" android:launchMode="singleTask"> <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="XINSTALL_SCHEME"/> </intent-filter> </activity> 

备注:将 XINSTALL_SCHEME配置成 xninstall 为应用分配的scheme: xi40zr7uc

2、在拉起页面中如下调用相关代码,获取 web 端传过来的动态参数

class MainActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取唤醒参数 XInstall.getWakeUpParam(getIntent(), wakeUpAdapter); } @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); // 此处要调用,否则App在后台运行时,会无法截获 XInstall.getWakeUpParam(getIntent(), wakeUpAdapter); } XWakeUpAdapter wakeUpAdapter = new XWakeUpAdapter() { @Override public void onWakeUp(XAppData XAppData) { //获取渠道数据 String channelCode = XAppData.getChannelCode(); //获取数据 Map<String, String> data = XAppData.getExtraData(); //通过链接后面携带的参数或者通过webSdk初始化传入的data值。 String uo = data.get("uo"); //webSdk初始,在buttonId里面定义的按钮点击携带数据 String co = data.get("co"); //获取时间戳 String timeSpan = XAppData.getTimeSpan(); } }; @Override protected void onDestroy() { super.onDestroy(); wakeUpAdapter = null; } } 

三、携带安装参数
在 APP 需要安装参数时(由 web 网页中传递过来的,如邀请码、游戏房间号等动态参数),调用 XInstall.getInstall方法,在回调中获取参数(可重复获取):

XInstall.getInstallParam(new XInstallAdapter() {
  @Override
  public void onInstall(XAppData XAppData) {
    //获取渠道数据
    String channelCode = XAppData.getChannelCode();

    //获取数据
    Map<String, String> data = XAppData.getExtraData();
    //通过链接后面携带的参数或者通过webSdk初始化传入的data值。
    String uo = data.get("uo");
    //webSdk初始,在buttonId里面定义的按钮点击携带数据
    String co = data.get("co");

    //获取时间戳
    String timeSpan = XAppData.getTimeSpan();
  }
}); 

四、渠道统计

SDK 会自动完成访问量、点击量、安装量、活跃量、留存率等统计工作。

如需统计每个渠道的注册量(对评估渠道质量很重要),可根据自身的业务规则,在确保用户完成 app 注册的情况下调用以下接口:

//用户注册成功后调用
XInstall.reportRegister(); 

iOS集成SDK

XInstall的核心价值在于,帮助iOS开发者通过Xinstall提供的sdk,精确的获取app每一次安装的分享(或推广)来源。
1、下载SDK并导入
下载ios最新版本SDK,解压SDK压缩包,将文件夹添加到工程中(导 入请选中Copy items if needed
2、初始化SDK
在AppDelegate中,增加头文件的引用:

//swift开发时,请使用桥接方式引入
#import "XInstallSDK.h" 

增加遵守的协议:

@interface AppDelegate ()<XInstallDelegate> 

在Info.plist文件中配置appKey键值对,如下:

<key>com.xinstall.APP_KEY</key>
<string>40zr7uc</string> 

application: didFinishLaunchingWithOptions:方法中调用initWithDelegate方法来初始化SDK,如下代码所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [XInstallSDK initWithDelegate:self];
  return YES;
} 

3、一键拉起
Xinstall 通过universal link(iOS≥9 ),在app已安装的情况下,从各种浏览器(包括微信、QQ、新浪微博、钉钉等主流社交软件的内置浏览器)拉起app并传递动态参数,避免重复安装。

首先,我们需要到苹果开发者网站,为当前的App ID开启关联域名(Associated Domains)服务:
Xinstall集成Android和iOS以及Web三端快速集成SDK与使用
为刚才开发关联域名功能的AppID创建新的(或更新现有的)描述文件,下载并导入到XCode中(通过xcode自动生成的描述文件,可跳过这一步):

Xinstall集成Android和iOS以及Web三端快速集成SDK与使用
在XCode中配置Xinstall为当前应用生成的关联域名(Associated Domains): applinks:40zr7uc.xinstall.top

Xinstall集成Android和iOS以及Web三端快速集成SDK与使用
在AppDelegate中添加通用链接(Universal Link)回调方法,委托给XinstallSDK来处理

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
  //判断是否通过XInstall Universal Link 唤起App
  if ([XinstallSDK continueUserActivity:userActivity]){//如果使用了Universal link ,此方法必写
    return YES;
  }
  //其他第三方回调;
  return YES;
} 

如果有SceneDelegate, 则调用的方法需要放SceneDelegate

//SceneDelegate
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions  API_AVAILABLE(ios(13.0)) {
    // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
    // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
    // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).

    // 走scene 如果是universal Link 冷启动不会调SceneDelegate 的 - (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity 方法
    if (connectionOptions.userActivities.count > 0 ){
        [connectionOptions.userActivities enumerateObjectsUsingBlock:^(NSUserActivity * _Nonnull obj, BOOL * _Nonnull stop) {
            if ([XinstallSDK continueUserActivity:obj]) {
                 *stop = YES;
            }
        }];
    }
}

- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
  NSLog(@"userActivity : %@",userActivity.webpageURL.description);
  if (![XinstallSDK continueUserActivity:userActivity]) {
    //其他第三方回调 
  }
} 

在AppDeletegate中遵守协议,添加一键拉起的回调,获取来自H5页面的动态参数,根据参数值直达具体页

/通过Xinstall获取已经安装App被唤醒时的参数(如果是通过渠道页面唤醒App时,会返回渠道编号)
- (void)xinstall_getWakeUpParams:(nullable XInstallData *)appData {
  if (appData.data) { //(动态唤醒参数)
    //e.g.如免填邀请码建立邀请关系、自动加好友、自动进入某个群组或房间等
  }
  if (appData.channelCode) { //(通过渠道链接或二维码唤醒会返回渠道编号)
    //e.g.可自己统计渠道相关数据等
  }
  if (appData.timeSpan > 20 ) {
    //e.g. 超过20s不处理
  }
  NSLog(@"XinstallSDK:\n动态参数:%@;\n渠道编号:%@",appData.data,appData.channelCode);
} 

4、携带安装参数
在·AppDeletegate·中遵守协议,添加安装参数的回调,获取来自H5页面的动态参数,根据参数值直达具体页:

//安装App后,通过XinstallSDK获取到传递的参数(如果是通过渠道页面安装App时,会返回渠道编号)
- (void)xinstall_getInstallParams:(nullable XInstallData *)appData {
  if (appData.data) { //(动态传递参数)
    //e.g.如免填邀请码建立邀请关系、自动加好友、自动进入某个群组或房间等安装事件
  }
  if (appData.channelCode) {//(通过渠道链接或二维码安装会返回渠道编号)
    //e.g.可自己统计渠道相关数据等
  }
  if (appData.timeSpan > 20 ) {
    //e.g. 超过20s不处理
  }
  NSLog(@"XinstallSDK:\n动态参数:%@;\n渠道编号:%@",appData.data,appData.channelCode);
} 

而非安装后第一次启动可以通过XinstallSDK 单例的属性installData获取到

[XinstallSDK defaultManager].installData 

如若installData为nill 则安装不来自于渠道

5、渠道统计
SDK初始化时会自动完成访问量、点击量、安装量、活跃量、留存率等统计工作。
注册量统计 如需统计每个渠道的注册量(对评估渠道质量很重要),可根据自身的业务规则,在确保用户完成app注册的情况下调用相关api

//用户注册成功后调用
[XinstallSDK reportRegister]; 

WEB集成SDK

Xinstall提供完整的javascript api,方便web开发者实现完全自主的设计。

<!-- 以下为xinstall集成代码,建议在html文档中尽量靠前放置,加快初始化过程 -->
<!-- 强烈建议直接引用下面的cdn加速链接,可以得到最及时的更新,我们将持续跟踪各种主流浏览器的变化,提供最好的服务;不推荐将此js文件下载到自己的服务器-->
<script type="text/javascript" charset="UTF-8" src="//cdn.xinstall.com/xinstall.js"></script>
<script type="text/javascript">
  //xinstall初始化,xinstall初始化时将与xinstall服务器交互,应尽可能早的调用
  /*web页面向app传递的json数据(json string/js Object),应用被拉起或是首次安装时,通过相应的ios api可以获取此数据*/
  var data = XInstall.parseUrlParams(); //xinstall.js中提供的工具函数,解析url中的所有查询参数
  new XInstall({
    /*appKey必选参数,xinstall平台为每个应用分配的appKey*/
    appKey : "40zr7uc",
    /*可选项,微信中打开自定义遮罩层*/
    //mask:function(){
    //  return "<div style='background:rgba(0,0,0,.5);position:fixed;left:0;top:0;filter:alpha(opacity=50);width:100%;height:100%;z-index:9999;'><div style='text-align:right; margin-top:1%; margin-right:5%;'><img style='width:70%; margin:0 auto;' src='https://cdn.xinstall.com/image/no_safari.png'/></div></div>"
    //},
    /*可选项,按钮携带特殊参数安装,idName(按钮的id值),params(当前按钮点击携带的传入值,传入类型强制为Array[Object])*/
    //buttonId: [
    //   { idName: 'downOne', params: {dataA: 'downOne', da: '1'} },
    //   { idName: 'downTwo', params: {dataB: 'downTwo', d: 'abc', c: 'cba'} },
    //   { idName: 'downThree' }
    // ],
    /*xinstall初始化完成的回调函数,可选*/
    onready : function() {
      var m = this,
          button = document.getElementById("downloadButton");
      button.style.visibility = "visible";
      /*用户点击某个按钮时(假定按钮id为downloadButton),安装app*/
      button.onclick = function() {
        m.wakeupOrInstall();
      }
    }
  }, data);
</script> 

集成完成后导出development/adhoc/enterprise类型的ipa包上传,生成在线测试链接
Xinstall集成Android和iOS以及Web三端快速集成SDK与使用

渠道管理

Xinstall集成Android和iOS以及Web三端快速集成SDK与使用
新建渠道
Xinstall集成Android和iOS以及Web三端快速集成SDK与使用

可以使用自己的落地页来管理渠道,如果没有自己的落地页,可以只用Xinstall系统默认的页面

渠道报表

可以看到ios和Android的安装、注册以及活跃设备数

Xinstall集成Android和iOS以及Web三端快速集成SDK与使用

本文地址:https://blog.csdn.net/A966669/article/details/107768995

上一篇:

下一篇: