找回密码
 注册帐号

扫一扫,访问微社区

薛飞 网页链接拉起Unity Android和iOS APP

10
回复
313
查看
[ 复制链接 ]
排名
418
昨日变化

19

主题

199

帖子

3916

积分

Rank: 9Rank: 9Rank: 9

UID
686
好友
18
蛮牛币
5266
威望
0
注册时间
2013-7-4
在线时间
1602 小时
最后登录
2019-3-21

专栏作家社区QQ达人

QQ

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 AWNUXCVBN 于 2019-3-15 15:00 编辑

1、安卓端代码
[Java] 纯文本查看 复制代码
package cn.net.xuefei.schemedemo;

import android.net.Uri;
import android.os.Bundle;
import android.util.Log;

import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
 
public class MainActivity extends UnityPlayerActivity {

    private String launchInfo="";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        launchInfo = onLaunchInfo();
    }

    @Override
    public void onResume()
    {
        super.onResume();
        launchInfo = onLaunchInfo();
    }

    private String onLaunchInfo()
    {
        String info="";
        Uri uri = getIntent().getData();
        if (uri != null) {
            // 完整的url信息
            String url = uri.toString(); 
            info = url;[/font][/color][color=#444444]            getIntent().setData(null);
            Log.e("Unity", "url: " + url);
        }
        return info;

    }

    public void getLaunchInfo()
    {
        UnityPlayer.UnitySendMessage("Main Camera", "OnLaunchInfo", launchInfo);
        launchInfo="";
    }
}


2、Unity中 Manifest.xml
[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package = "cn.net.xuefei.schemedemo"
    android:versionCode="1"
    android:versionName="1.0">

  <application
      android:allowBackup="true"
      android:icon="@drawable/app_icon"
      android:label="@string/app_name"
      android:supportsRtl="true">

    <activity android:name=".MainActivity" >
      <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.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="scheme"
              android:host="host"
              android:path="/path"
              android:port="8888"/>
      </intent-filter>
      <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    </activity>
  </application> 
</manifest>


3、Unity中代码
[C#] 纯文本查看 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

#if UNITY_IOS
using System.Runtime.InteropServices;
#endif

public class SchemeDemo : MonoBehaviour
{
    public Text text;

    // Use this for initialization
    void Start()
    {
        GetInfo();
    }

    // Update is called once per frame
    void Update()
    {

    }

    public void OnLaunchInfo(string launchInfo)
    {
        Debug.LogError("launchInfo:" + launchInfo);
        text.text = launchInfo;
    }

    public void GetInfo()
    {
        
#if UNITY_ANDROID
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        jo.Call("getLaunchInfo");
#elif UNITY_IOS
        _GetLaunchInfo();
#endif
    }

    private void OnApplicationFocus(bool focus)
    {
        Debug.LogError("focus:" + focus);
        if (true)
        {
            GetInfo();
        }
    }

#if UNITY_IOS
    [DllImport("__Internal")]
    private static extern void _GetLaunchInfo();
#endif
}


4、设置Unity iOS URL Schemes,修改导出的Xcode工程中的UnityAppController.mm
[AppleScript] 纯文本查看 复制代码
#import "UnityAppController.h"

NSString *URLString = @"";

// 向Unity传递参数;
extern void UnitySendMessage(const char *, const char *, const char *);

//添加的代码
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
{
    URLString = [url absoluteString]; 
    return YES;
}

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url sourceApplication:(NSString*)sourceApplication annotation:(id)annotation
{
    //添加的代码
    URLString = [url absoluteString]; 
    return YES;
}

extern "C"  
{  
    void _GetLaunchInfo();  
}  
  
void _GetLaunchInfo()  
{    
    UnitySendMessage( "Main Camera", [@"OnLaunchInfo" UTF8String], [URLString UTF8String] );  
    // 清空,防止造成干扰;  
    URLString = @"";  
}  

5、网页
[HTML] 纯文本查看 复制代码
<!doctype html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0">
        <title>Document</title>
</head>
<body>
        <input  id="btn" type="button" value="唤起SchemeDemo">
        <script>
                var btn = document.getElementById('btn');
                
                btn.onclick = function () {
                        jump('scheme://host:8888/path?ps=123456');
                };
                
                function  GetMobelType()  {                
                        var  browser  =   {                    
                                versions:   function()  {                        
                                        var  u  =  window.navigator.userAgent;    
                                        console.log(u);  //Safari浏览器 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.1.1 Safari/605.1.15                  
                                        return  {                            
                                                trident:  u.indexOf('Trident')  >  -1, //IE内核
                                                presto:  u.indexOf('Presto')  >  -1, //opera内核
                                                Alipay:  u.indexOf('Alipay')  >  -1, //支付宝
                                                webKit:  u.indexOf('AppleWebKit')  >  -1, //苹果、谷歌内核
                                                gecko:  u.indexOf('Gecko')  >  -1  &&  u.indexOf('KHTML')  ==  -1, //火狐内核
                                                mobile:  !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                                                ios:  !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                                                android:  u.indexOf('Android')  >  -1  ||  u.indexOf('Linux')  >  -1, //android终端或者uc浏览器
                                                iPhone:  u.indexOf('iPhone')  >  -1  ||  u.indexOf('Mac')  >  -1, //是否为iPhone或者安卓QQ浏览器
                                                //iPhone: u.match(/iphone|ipod|ipad/),//
                                                iPad:  u.indexOf('iPad')  >  -1, //是否为iPad
                                                webApp:  u.indexOf('Safari')  ==  -1, //是否为web应用程序,没有头部与底部
                                                weixin:  u.indexOf('MicroMessenger')  >  -1, //是否为微信浏览器
                                                qq: u.match(/\sQQ/i) !== null, //是否QQ
                                                Safari:  u.indexOf('Safari')  >  -1,
                                                  ///Safari浏览器,
                                        };                    
                                }()                
                        };                
                        return  browser.versions;            
                }
                
                
                function jump(myurl) { 
                        var timeout = 2300, timer = null;
                        if(GetMobelType().weixin) {
                                // 微信浏览器不支持跳转
                                // 可以显示提示在其他浏览器打开
                        } else {
                                var startTime = Date.now();
                                if(GetMobelType().android) {
                                        var ifr = document.createElement('iframe');
                                        ifr.src = myurl;//这里是唤起App的协议,有Android可爱的同事提供
                                        ifr.style.display = 'none';
                                        document.body.appendChild(ifr);
                                        timer = setTimeout(function() {
                                                var endTime = Date.now();
                                                if(!startTime || endTime - startTime < timeout + 300) {
                                                        document.body.removeChild(ifr);
                                                        //window.open("唤起失败跳转的链接");
                                                        window.open("https://www.ganghood.net.cn/SchemeDemo.apk");
                                                }
                                        }, timeout);
                                }
                                if(GetMobelType().ios || GetMobelType().iPhone || GetMobelType().iPad) {
                                        if(GetMobelType.qq) { 
                                        // ios的苹果浏览器
                                        // 提示在浏览器打开的蒙板
                                        } else {
                                                /*var ifr = document.createElement("iframe");
                                                ifr.src = myurl;
                                                ifr.style.display = "none";*/ // iOS9+不支持iframe唤起app
                                                window.location.href = myurl; //唤起协议,由iOS小哥哥提供
                                                //document.body.appendChild(ifr);
                                                
                                                timer = setTimeout(function() {
                                                        // window.location.href = "ios下载的链接";
                                                        window.location.href = "https://www.ganghood.net.cn/没有该文件.ipa";
                                                }, timeout);
                                        };
                                }
                        }
                }
        </script>
</body>
</html>



工程地址https://gitee.com/awnuxcvbn/SchemeDemo


TIM图片20190315140409.jpg
回复

使用道具 举报

排名
5512
昨日变化

4

主题

89

帖子

491

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
1997
好友
2
蛮牛币
1473
威望
0
注册时间
2013-8-14
在线时间
74 小时
最后登录
2019-3-15

社区QQ达人

QQ
7 天前 显示全部楼层
91飞先生厉害了
回复

使用道具 举报

6蛮牛粉丝
1071/1500
排名
2552
昨日变化

4

主题

97

帖子

1071

积分

Rank: 6Rank: 6Rank: 6

UID
46865
好友
1
蛮牛币
1190
威望
0
注册时间
2014-9-26
在线时间
406 小时
最后登录
2019-3-19
7 天前 显示全部楼层
91飞先生厉害了
回复

使用道具 举报

7日久生情
3430/5000
排名
2980
昨日变化

22

主题

2093

帖子

3430

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
173503
好友
3
蛮牛币
831
威望
0
注册时间
2016-10-5
在线时间
819 小时
最后登录
2019-3-20
7 天前 显示全部楼层
没看明白是什么意思!!!
回复 支持 反对

使用道具 举报

7日久生情
2075/5000
排名
2354
昨日变化

8

主题

762

帖子

2075

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
40014
好友
16
蛮牛币
2757
威望
0
注册时间
2014-8-15
在线时间
531 小时
最后登录
2019-3-20
QQ
6 天前 显示全部楼层
网页链接拉起Unity Android和iOS APP
回复 支持 反对

使用道具 举报

5熟悉之中
969/1000
排名
2115
昨日变化

0

主题

171

帖子

969

积分

Rank: 5Rank: 5

UID
26073
好友
0
蛮牛币
3700
威望
0
注册时间
2014-5-21
在线时间
142 小时
最后登录
2019-3-21
6 天前 显示全部楼层
表示不太懂
回复

使用道具 举报

6蛮牛粉丝
1055/1500
排名
5543
昨日变化

0

主题

662

帖子

1055

积分

Rank: 6Rank: 6Rank: 6

UID
300432
好友
1
蛮牛币
1454
威望
0
注册时间
2018-10-18
在线时间
133 小时
最后登录
2019-3-20
6 天前 显示全部楼层
66666666666666
回复

使用道具 举报

7日久生情
1561/5000
排名
4092
昨日变化

0

主题

932

帖子

1561

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
254705
好友
1
蛮牛币
1536
威望
0
注册时间
2017-11-16
在线时间
267 小时
最后登录
2019-3-21
4 天前 显示全部楼层
66666666666666666666666666666
回复 支持 反对

使用道具 举报

4四处流浪
447/500
排名
10813
昨日变化

2

主题

283

帖子

447

积分

Rank: 4

UID
310426
好友
0
蛮牛币
290
威望
0
注册时间
2019-1-2
在线时间
66 小时
最后登录
2019-3-21
4 天前 显示全部楼层
厉害了啊
回复

使用道具 举报

5熟悉之中
939/1000
排名
16952
昨日变化

0

主题

632

帖子

939

积分

Rank: 5Rank: 5

UID
199204
好友
1
蛮牛币
430
威望
0
注册时间
2017-1-5
在线时间
267 小时
最后登录
2019-3-19
4 天前 显示全部楼层
谢谢分享
回复

使用道具 举报

7日久生情
1561/5000
排名
4092
昨日变化

0

主题

932

帖子

1561

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
254705
好友
1
蛮牛币
1536
威望
0
注册时间
2017-11-16
在线时间
267 小时
最后登录
2019-3-21
前天 08:30 显示全部楼层
6666666666666666666666666666666
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则