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

12
回复
1432
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
417
昨日变化

21

主题

215

帖子

4077

积分

Rank: 9Rank: 9Rank: 9

UID
686
好友
18
蛮牛币
5351
威望
0
注册时间
2013-7-4
在线时间
1731 小时
最后登录
2019-6-26

专栏作家

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.yzc88޳.player.UnityPlayer;
import com.yzc88޳.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.yzc88޳.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 (27.58 KB, 下载次数: 57)

TIM图片20190315140409.jpg
排名
5512
昨日变化

4

主题

90

帖子

493

积分

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

UID
1997
好友
2
蛮牛币
1406
威望
0
注册时间
2013-8-14
在线时间
75 小时
最后登录
2019-5-7
QQ
沙发
2019-3-15 14:36:36 只看该作者
91飞先生厉害了
6蛮牛粉丝
1082/1500
排名
2551
昨日变化

4

主题

99

帖子

1082

积分

Rank: 6Rank: 6Rank: 6

UID
46865
好友
1
蛮牛币
1186
威望
0
注册时间
2014-9-26
在线时间
413 小时
最后登录
2019-6-25
板凳
2019-3-15 14:37:45 只看该作者
91飞先生厉害了
7日久生情
3656/5000
排名
2980
昨日变化

25

主题

2214

帖子

3656

积分

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

UID
173503
好友
3
蛮牛币
1028
威望
0
注册时间
2016-10-5
在线时间
921 小时
最后登录
2019-6-17
地板
2019-3-15 20:07:32 只看该作者
没看明白是什么意思!!!
7日久生情
2123/5000
排名
2353
昨日变化

8

主题

782

帖子

2123

积分

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

UID
40014
好友
16
蛮牛币
2910
威望
0
注册时间
2014-8-15
在线时间
559 小时
最后登录
2019-6-26
QQ
5#
2019-3-16 01:31:57 只看该作者
网页链接拉起Unity Android和iOS APP
6蛮牛粉丝
1100/1500
排名
2066
昨日变化

0

主题

230

帖子

1100

积分

Rank: 6Rank: 6Rank: 6

UID
26073
好友
1
蛮牛币
4174
威望
0
注册时间
2014-5-21
在线时间
202 小时
最后登录
2019-6-26
6#
2019-3-16 09:18:59 只看该作者
表示不太懂
6蛮牛粉丝
1050/1500
排名
5543
昨日变化

0

主题

657

帖子

1050

积分

Rank: 6Rank: 6Rank: 6

UID
300432
好友
1
蛮牛币
1450
威望
0
注册时间
2018-10-18
在线时间
133 小时
最后登录
2019-3-27
7#
2019-3-16 10:00:12 只看该作者
66666666666666
7日久生情
1868/5000
排名
4092
昨日变化

0

主题

1184

帖子

1868

积分

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

UID
254705
好友
1
蛮牛币
1725
威望
0
注册时间
2017-11-16
在线时间
322 小时
最后登录
2019-6-26
8#
2019-3-18 08:26:46 只看该作者
66666666666666666666666666666
5熟悉之中
850/1000
排名
10817
昨日变化

3

主题

611

帖子

850

积分

Rank: 5Rank: 5

UID
310426
好友
0
蛮牛币
978
威望
0
注册时间
2019-1-2
在线时间
140 小时
最后登录
2019-6-25
9#
2019-3-18 08:55:05 只看该作者
厉害了啊
6蛮牛粉丝
1105/1500
排名
16954
昨日变化

1

主题

725

帖子

1105

积分

Rank: 6Rank: 6Rank: 6

UID
199204
好友
1
蛮牛币
902
威望
0
注册时间
2017-1-5
在线时间
339 小时
最后登录
2019-6-26
10#
2019-3-18 13:25:10 只看该作者
谢谢分享
7日久生情
1868/5000
排名
4092
昨日变化

0

主题

1184

帖子

1868

积分

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

UID
254705
好友
1
蛮牛币
1725
威望
0
注册时间
2017-11-16
在线时间
322 小时
最后登录
2019-6-26
11#
2019-3-20 08:30:04 只看该作者
6666666666666666666666666666666
4四处流浪
407/500
排名
13053
昨日变化

0

主题

275

帖子

407

积分

Rank: 4

UID
199276
好友
0
蛮牛币
7
威望
0
注册时间
2017-1-5
在线时间
64 小时
最后登录
2019-5-17
12#
2019-3-22 09:44:23 只看该作者
erthtsryesryseryseyestry
4四处流浪
448/500
排名
31431
昨日变化

0

主题

311

帖子

448

积分

Rank: 4

UID
247666
好友
0
蛮牛币
132
威望
0
注册时间
2017-10-9
在线时间
127 小时
最后登录
2019-5-1
13#
2019-3-23 11:02:47 只看该作者
飞先生厉害了
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则