1.基础介绍

专业的移动应用推广能力,为您的应用提供安装来源追踪,用户免填邀请码绑定邀请关系,一键唤醒应用到指定页面等功能,通过数据可视化展现,准确核对销售地推业绩,协议产品运营决策。

1.1 产品特色

(1)智能传递参数

通过H5页面传递,产生的用户的安装,下载,打开、拉起应用等行为均可智能传递自定义参数,通过shareinstall后台大数据算法的精准识别,匹配来源邀请行为,绑定邀请、好友关系。亦可根据参数直达应用指定场景,聊天室、游戏室。

(2)快速分享安装

分享后点击即可快速安装,省略了中间步骤。减少用户因步骤繁多而引起的流失,准确获取用户推广、地推、销售的业绩指标。兼容国内外主流社交平台,智能快速。

(3)多维数据统计

多维数据统计,新增、活跃、启动等多重指标,直达用户行为分析。可添加多重渠道,精准核算销售地推业绩。丰富的折线统计图,详细的数据,协助产品运营作出最佳决策。

2.接入流程

2.1创建账号,创建应用,获取AppKey

登录shareinstall控制台,完善资料,在应用管理页面创建应用,获取AppKey。 注意:为了避免个人离职造成应用交接不方便的问题,建议开发者使用企业邮箱或者公共邮箱进行注册。

2.2下载并集成SDK,API

在SDK下载页面或者控制台种,下载SDK并集成,确保AppKey配置准确。

2.3根据开发文档接入APP、H5

根据开发文档集成shareinstall相应功能,将shareinstall提供的文件,配置至包和js代码之中。

2.4相应功能测试

使用shareinstall控制台提供的在线测试功能,或者自行完成功能测试。如遇到问题可以咨询我方,我方提供前期接入的技术支持服务。

3.注册并开始

注册和登录账号

Shareinstall需要邮箱和手机号进行注册。 (注意:如果非个人开发者,建议使用公司邮箱) 点击首页右上角进入控制台,选择还没有账号进行注册,进入注册界面。 Shareinstall登录采用邮箱或手机号加密码的形式进行登录。

创建应用

登录后就可以创建应用了,每个应用对应着一个APPKEY,对应着一个付费的账号。首次创建将会获得为期一周的免费使用时间,用于深入了解Shareinstall产品和测试。平台数据模块对ios和安卓有区分,建议ios、安卓使用同一个APPKEY。

4.指标说明

新增用户:第一次启动的用户,以设备作为判断标准
启动用户: 打开应用视为视为启动,完全退出或者后台运行超过30s后再次进入应用,视为新的启动
时段累计日活:启动过的应用的用户,启动过一次就视为活跃用户,包含新用户和老用户。这里指的时截止至各个整点时刻的当日活跃用户
累计用户:截止至目前所有启动过应用的独立用户数
活跃用户:启动过应用的用户,启动一次即视为活跃,包含新用户和老用户。
APP访问量:H5链接引导唤醒app的用户数量,已去重处理
APP安装量:H5链接引导用户下载的app的用户数量,已去重处理
APP注册量:注册成功的时调用[ShareInstallSDK reportRegister] 方法计入统计

5.快速集成文档

1.安卓集成

一、导入SDK

从下载的ShareInstallSdk.zip文件中,将aar文件拷贝到项目的libs文件夹中,并导入。

dependencies {
    compile(name: 'ShareInstall_1.0.7', ext:  'aar')
}
(注:导入aar需检查build文件中是否已经加入以下代码,否则会报错)
repositories {
    flatDir {
        dirs 'libs'
    }
}

二、基础配置

在AndroidMainfest.xml中添加权限声明。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在AndroidMainfest.xml中的application标签中添加分配给你应用的Appkey
<meta-data    
    android:name="com.shareinstall.APP_KEY"
    android:value="shareinstall为当前应用分配的appkey"/>
在自定义Application中调用ShareInstall.getInstance().init(context)方法完成SDK初始化,初始化前先判断当前进程是否是应用的主进程。
public class MyApp extends  Application {

    @Override
    public void onCreate() {
        super.onCreate();
        if (isMainProcess()) {
            ShareInstall.getInstance().init(getApplicationContext());
        }
    }

   /**
    * 判断当前进程是否是应用的主进程
    *
    * @return
    */
    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;
    }
}
如果使用ShareInstall控制中心提供的注册统计功能,可调用方法 ShareInstall.getInstance().reportRegister(); 注意该方法要在ShareInstall.getInstance().init (context)方法之后调用,否则会抛异常。
// 调用注册接口
ShareInstall.getInstance().reportRegister();
在AndroidMainfest.xml中的application标签中添加android:name=".MyApplication"指定自定义的Application类,以便程序启动的时候初始化自定义Application类,而不是系统默认的Application类。
<application
        android:name=".MyApplication"
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
</application>

三、一键跳转

在AndroidMainfest的唤醒页面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="shareinstall为当前应用分配的scheme" />
    </intent-filter>
</activity>
注:如果唤醒页面和启动页是同一Activity,则AndroidMaifest.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="shareinstall为当前应用分配的scheme"/>
    </intent-filter>
</activity>
个性化安装和一键唤醒都调用同一个方法ShareInstall.getInstance().getInfo()获取相关信息,第一个参数为Intent(注:Intent可传null,但在配置了scheme唤醒的页面必须传,否则拿不到传递过来的参数),第二个参数为信息回调监听

四、个性化安装

在APP需要个性化安装参数时(由web网页中传递过来的,如邀请码、游戏房间号等 自定义参数),调用以下方法,在回调中获取参数。
ShareInstall.getInstance().getInfo(intent, new AppGetInfoListener() {
    @Override
    public void onGetInfoFinish(String info) {
        Log.d("ShareInstall", "info = " + info);
    }
});

五、唤醒页面获取信息

public class WakeUpActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wake_up);
        // 获取唤醒参数
        ShareInstall.getInstance().getInfo(getIntent(), listener);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        // 此处要调用,否则app在后台运行时,会无法截获
        ShareInstall.getInstance().getInfo(intent, listener);
    }

    private AppGetInfoListener listener = new AppGetInfoListener() {
        @Override
        public void onGetInfoFinish(String info) {
            Log.d("ShareInstall", "info = " + info);
        }
    };

2.iOS集成

一、导入SDK

下载并解压最新版SDK压缩包,将libShareInstall.a和ShareInstallSDK.h导入工程中。

二、初始化SDK

在AppDelegate中,增加头文件的引用:

#import “ShareInstallSDK.h”

在-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    方法中调用setAppKey方法来初始化SDK,如下代码所示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ShareInstallSDK setAppKey:@"shareinstall为当前应用分配的appkey" withDelegate:self WithOptions:launchOptions];
return YES;
}
注:AppKey需填写自己的AppKey,请到ShareInstall官网后台查看自己应用的AppKey。

三、个性化安装

当应用安装后首次打开时,iOS sdk会收到网页端通过js sdk传来的自定义动态参数,精确的获取app每一次安装的分享(或推广)来源。比如通过在分享链接url中附带app邀请人的用户id,就可达到免填邀请码的效果;url中可拼接自定义的参数。在AppDelegate中,添加获取安装参数的回调方法,代码如下所示:
#pragma mark ShareInstallDelegate
//通过ShareInstall获取自定义参数,数据为空时也会调用此方法
- (void)getInstallParamsFromSmartInstall:(id) params withError: (NSError *) error{
NSLog(@"安装参数params=%@",params);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"直接点击App进来的" message:[self DataTOjsonString:params] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    //弹出提示框(便于调试,调试完成后删除此代码)
    [alert show];
}

四、一键跳转

ShareInstall通过标准的scheme、universal link等技术,在app安装的情况下,从各种浏览器(微信、QQ、新浪微博、钉钉等主流社交软件的内置浏览器)唤醒 app 并传递自定义参数,避免重复安装。

Universal link是iOS9的一个新特性,通过Universal link,App可以通过各种浏览器跳转到App(例如微信内可不通过safari,一键跳转到App),真正实现一键跳转到相应界面。 备注:iOS9以上推荐使用Universal link。

(1)配置developer.apple.com的相关信息

到苹果开发者中心,为当前的App ID开启Associated Domains服务:

(2)配置Xcode

在Xcode中配置ShareInstall为当前应用生成的关联域名:Associated Domains 开关打开,添加 Domains:applinks:xxx.shareinstall.net 在AppDelegate中的continueUserActivity方法中调用,用来处理Universal link。

//Universal Links 通用链接
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{
    //判断是否通过ShareInstall Universal Links 唤起App
    if ([ShareInstallSDK continueUserActivity:userActivity]) {
        return YES ;
    }else{
        //其他代码
        return YES;
    }
}

(3)配置App的URL Scheme

iOS系统中App之间是相互隔离的,通过URL Scheme, App之间可以相互调用,并且可以传递参数。 备注:iOS9以下通过Url Scheme实现拉起。

(4) 在Xcode里选中Target—Info—URL Types, 配置shareInstall为当前应用生成的Url Scheme,如图所示:

identifier 配置为 com.ShareInstall,URL Schemes从shareInstall获取(分配的scheme)。 注:identifier 一定要配置为com.ShareInstall

(5) URL Scheme相关代码配置

注意:当需要在shareInstall这个方法中处理第三方回调的时候(比如支付宝、微信回调等),请注意区分。

//iOS9以下 URI Scheme
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{

    //判断是否通过ShareInstall URL Scheme 唤起App
    if ([ShareInstallSDK handLinkURL:url]) {
         return YES;
    }else{
        //其他代码
        return YES;
    }

    return YES;
}

//iOS9以上 URL Scheme
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(nonnull NSDictionary *)options
{
    //判断是否通过ShareInstall URL Scheme 唤起App
    if ([ShareInstallSDK handLinkURL:url]) {

        return YES;
    }else{
        //其他代码
        return YES;
    }

    return YES;
}

(6)获取唤醒参数,直达具体页

通过在url中附带具体的参数,唤醒app并跳转到具体页。

- (void)getWakeUpParamsFromSmartInstall: (id) params withError: (NSError *) error{
NSLog(@"唤醒参数params=%@",params);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL shceme 进来的" message:[self DataTOjsonString:params] delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
//弹出提示框(便于调试,调试完成后删除此代码)
[alert show];
}

(7) 其他代码配置

如果做测试,获取参数,则必须在Appdelegate.h加上如下测试代码。

#pragma mark 将oc数据类型转成NSString
-(NSString *)DataTOjsonString:(id)object
{
    if (!object) {
        return null;
    }

    NSString *jsonString = null;
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:object
                                                       options:NSJSONWritingPrettyPrinted
                                                         error:&error];
    if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
    return jsonString;
}

六、注册量统计

使用Shareinstall 控制中心提供的渠道统计时,在App用户注册完成后调用,可以统计渠道注册量。

warning 必须在注册成功的时调用[ShareInstallSDK reportRegister] 方法,否则可能导致注册统计不准。

3.WEB集成

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

集成步骤:

本WEB SDK需配合 Android、iOS SDK ver1.0.7以上版本使用
<!-- 建议直接引用下面的js链接,以便得到最及时的更新,我们将持续跟踪各种主流浏览器的变化,为您提供最好的服务-->
<script type="text/javascript" src="//www.shareinstall.net/js/page/shareinstall-h5.min.js"></script>
<script type="text/javascript">
    //shareinstall初始化,初始化时将与shareinstall服务器交互,应尽可能早的调用
    /*web页面向app传递的json数据(json string/js Object),应用被拉起或是首次安装时,通过相应的android/ios api可以获取此数据*/
    var data = ShareInstall.parseUrlParams();//shareinstall.js中提供的工具函数,解析url中的所有查询参数
    new ShareInstall({
        appKey : 'shareinstall为当前应用分配的appkey',
        //可选项,微信中打开自定义遮罩层
        //shadow : function(){
        //  return "<div id='shareinstall_shadow' style='position:fixed;left:0;top:0;background:rgba(0,255,0,0.5);filter:alpha(opacity=50);width:100%;height:100%;z-index:10000;'></div>"
        // },
        onready : function() {
            //shareinstall已成功回调
            var m = this, button = document.getElementById("downloadButton");
            button.style.visibility = "visible";

            /*用户点击某个按钮时(假定按钮id为downloadButton),安装app*/
            button.onclick = function() {
                m.wakeupOrInstall();
            }
        }
    }, data);
</script>

results matching ""

    No results matching ""