• Unity安卓app跳转

    2018-10-12 15:08:45
    一个主app作为启动程序,跳转到其他app,其他app需要隐藏app图标。 跳转代码: private void ChangeIntent() { AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); ...

    一个主app作为启动程序,跳转到其他app,其他app需要隐藏app图标。

    跳转代码:

     private void ChangeIntent()
        {
            AndroidJavaClass up = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
    
            AndroidJavaObject ca = up.GetStatic<AndroidJavaObject>("currentActivity");
    
            AndroidJavaObject intent = new AndroidJavaObject("android.content.Intent");
            AndroidJavaObject componentName = new AndroidJavaObject("android.content.ComponentName", "com.company.product", "com.unity3d.player.UnityPlayerNativeActivityPico");
            intent.Call<AndroidJavaObject>("setComponent", componentName);
            intent.Call<AndroidJavaObject>("setAction", "android.intent.action.MAIN");
    
            ca.Call("startActivityForResult", intent, 1);
    
            up.Dispose();
            ca.Dispose();
            intent.Dispose();
            componentName.Dispose();
        }

    com.company.product:需要跳转的app的包名

    com.unity3d.player.UnityPlayerNativeActivityPico:需要跳转的app的androidname,在AndroidManifest.xml里<activity android:name=“这里就是”。

     

    其他需要被跳转的app需要注掉Androidmainfest.xml文件中的<category android:name="android.intent.category.LAUNCHER" />,这样安装后就不会显示app的图标。

     

    展开全文
  • 华为商店为例 //跳转到指定应用商店,这里以华为为例 public void OnRateToHuawei() { RateToOther("com.google.android.apps.maps".../// appPkg: 你需要跳转到的App应用 /// marketPkg: 应用商店的PackageName pu...

    华为商店为例

    //跳转到指定应用商店,这里以华为为例
    public void OnRateToHuawei()
    {
        RateToOther("com.google.android.apps.maps", "com.huawei.appmarket");
    }
    
    /// 参数
    /// appPkg: 你需要跳转到的App应用
    /// marketPkg: 应用商店的PackageName
    public static void RateToOther(string appPkg, string marketPkg)
    {
        if (!Application.isEditor)
        {
            AndroidJavaClass intentClass = new AndroidJavaClass("android.content.Intent");
            AndroidJavaObject intentObject = new AndroidJavaObject("android.content.Intent");
            intentObject.Call<AndroidJavaObject>("setAction", intentClass.GetStatic<string>("ACTION_VIEW"));
            AndroidJavaClass uriClass = new AndroidJavaClass("android.net.Uri");
            AndroidJavaObject uriObject = uriClass.CallStatic<AndroidJavaObject>("parse", "market://details?id=" + appPkg);
            intentObject.Call<AndroidJavaObject>("setData", uriObject);
            intentObject.Call<AndroidJavaObject>("setPackage", marketPkg);
            AndroidJavaClass unity = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject currentActivity = unity.GetStatic<AndroidJavaObject>("currentActivity");
            currentActivity.Call("startActivity", intentObject);
        }
    }
    

    天朝各应用商店的PackageName

    应用商店 应用包名
    腾讯应用宝 com.tencent.android.qqdownloader
    360手机助手 com.qihoo.appstore
    百度手机助手 com.baidu.appsearch
    小米应用商店 com.xiaomi.market
    华为应用商店 com.huawei.appmarket
    Google Play Store com.android.vending
    魅族应用市场 com.meizu.mstore
    豌豆荚 com.wandoujia.phoenix2
    91手机助手 com.dragon.android.pandaspace
    PP手机助手 com.pp.assistant
    OPPO应用商店 com.oppo.market
    VIVO应用商店 com.bbk.appstore
    搜狗应用市场 com.sogou.androidtool
    三星应用商店 com.sec.android.app.samsungapps
    联想应用商店 com.lenovo.leos.appstore
    中兴应用商店 zte.com.market
    安智应用商店 com.hiapk.marketpho
    应用汇 com.yingyonghui.market
    机锋应用市场 com.mappn.gfan
    安卓市场 com.hiapk.marketpho
    GO商店 cn.goapk.market
    酷派应用商店 com.yulong.android.coolmart
    酷市场 com.coolapk.market
    金立软件商店 com.gionee.aora.market

    https://blog.csdn.net/pz789as/article/details/78223517
    https://www.jianshu.com/p/cfb7f212a5a2

    展开全文
  • 本来可以通过Unity的Application.OpenUrl的方式,跳转AppStore中去评价,但是iOS6以上还有一个方式,可以直接在应用内弹出评价框来 那么我在以前的NativeShare的基础上增加了一个函数,就可以使用了。 之前的代码...

    本来可以通过Unity的Application.OpenUrl的方式,跳转到AppStore中去评价,但是iOS6以上还有一个方式,可以直接在应用内弹出评价框来

    那么我在以前的NativeShare的基础上增加了一个函数,就可以使用了。

    之前的代码看这里:Unity3D-调用IOS原生分享的实现  (从来没学过原生或者没做过原生的同学,一定先去看这篇文章!因为是在上一个博客的基础上增加的。)

    首先是 .h 文件:

    #import <UIKit/UIKit.h>
    #import <StoreKit/StoreKit.h>//引入弹框库
    
    @interface GJCSocialShare : NSObject<SKStoreProductViewControllerDelegate>//实现弹框的回调,在取消时会有个回调,必须要加
    
    + (id) sharedInstance;
    
    - (void) nativeShare:(NSString*)text media: (NSString*) media;
    - (void) showStoreProductInApp:(NSString *)appID;//通过传入一个appID,去打开对应的应用详情
    - (void) productViewControllerDidFinish:(SKStoreProductViewController *)viewController;//弹框关闭时的回调
    
    @end

    里面后面加入注释的,都是新加入的

    其次 .mm 文件:

    ...
    
    - (void)showStoreProductInApp:(NSString *)appID{//方法实现
        Class isAllow = NSClassFromString(@"SKStoreProductViewController");
        if (isAllow != nil) {
            SKStoreProductViewController *storeVC = [[SKStoreProductViewController alloc] init];
            [storeVC.view setFrame:CGRectMake(0, 200, 320, 200)];
            [storeVC setDelegate:self];
            [storeVC loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier: appID}
                               completionBlock:^(BOOL result, NSError *error) {
                                   if (result) {
                                       NSLog(@"show component: true");
                                       UnitySendMessage("GJCNativeShare", "OnOpenAppStoreSuccess", [GJC_DataConvertor NSStringToChar:@"Success"]);
                                       UIViewController *vc =  UnityGetGLViewController();
                                       [vc presentViewController:storeVC animated:YES completion:nil];
                                    }else{
                                        NSLog(@"error:%@",error);
                                        UnitySendMessage("GJCNativeShare", "OnOpenAppStoreFailed", [GJC_DataConvertor NSStringToChar:error.localizedDescription]);
                                    }
                                }];
        }else{
            NSLog(@"Not support this controller, use openUrl to AppStore!");
            UnitySendMessage("GJCNativeShare", "OnOpenAppStoreSuccessURL", [GJC_DataConvertor NSStringToChar:@"Success on url"]);
            //低于iOS6的系统版本没有这个类,不支持这个功能
            NSString *string = [NSString stringWithFormat:@"https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=%@&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8",appID];
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:string]];
        }
    }
    //回调
    - (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
        NSLog(@"show component finished");
        UnitySendMessage("GJCNativeShare", "OnOpenAppStoreFinished", [GJC_DataConvertor NSStringToChar:@"Finished"]);
        //在代理方法里dismiss这个VC
        [viewController dismissViewControllerAnimated:YES completion:nil];
    }
    
    ...

    再次,在 .mm 文件最后加入一个可供Unity端调用的接口

    extern "C" {
        void _GJC_OpenAppStore(char* appId) {
            NSString *appID = [GJC_DataConvertor charToNSString:appId];
            [[GJCSocialShare sharedInstance] showStoreProductInApp:appID];
        }
    }


    好了,原生这边就加完了。

    接下来看看Unity这边的 .cs 文件,我们也需要增加对应的方法:

    public class GJCNativeShare : MonoBehaviour {
    	#if UNITY_IPHONE && !UNITY_EDITOR
    
    	[DllImport ("__Internal")]
    	private static extern void _GJC_OpenAppStore(string appID);//---add---
    	#endif
    
    	public delegate void OnNativeEvent(string msg);
    
    	public OnNativeEvent onOpenAppStore = null;
    
    	//---add---
    	private void OnNativeShareCancel(string result){
    		// Debug.Log("cancel: " + result);
    		if (onShareCancel != null){
    			onShareCancel(result);
    		}
    	}
    	//加载完毕开始展示界面 //---add---
    	private void OnOpenAppStoreSuccess(string result){
    		Debug.Log("Success: " + result);
    		if (onOpenAppStore != null){
    			onOpenAppStore("Success");
    		}
    	}
    	//界面关闭,无论是取消还是其他操作 //---add---
    	private void OnOpenAppStoreFinished(string result){
    		Debug.Log("Finished: " + result);
    		if (onOpenAppStore != null){
    			onOpenAppStore("Finished");
    		}
    	}
    	//如果iOS版本不支持,则自动跳转到 AppStore 中展示,返回 //---add---
    	private void OnOpenAppStoreSuccessURL(string result){
    		Debug.Log("Success: " + result);
    		if (onOpenAppStore != null){
    			onOpenAppStore("Success on url");
    		}
    	}
    	//加载失败,出现问题 //---add---
    	private void OnOpenAppStoreFailed(string result){
    		Debug.Log("Failed: " + result);
    		if (onOpenAppStore != null){
    			onOpenAppStore("Failed");
    		}
    	}
    }


    然后是怎么在任意一个脚本里面加入调用的方法:

    public class Main : MonoBehaviour {
    	void Start()
    	{
    		GJCNativeShare.Instance.onOpenAppStore = OnNativeEvent;
    	}
    	public void OnOpenAppStore(){
    		GJCNativeShare.Instance.OpenAppStore("1251737937");
    	}
    	void OnNativeEvent(string msg){
    		Debug.Log("OnNativeEvent: " + msg);
    		//--- your code
    	}
    }
    



    打开效果,就如同你在AppStore中点击一个应用弹出的框是一模一样的。

    我是使用的以前上线的应用打开的,可以展示出来。

    另外,需要注意的地方是,在Unity端,可以选中原生的 .h 或 .mm 文件,从右边框里面把 StoreKit.frameword 勾上,像这样:


    那个Social 勾上,是以为只用了原生分享组件,我在原来的基础上添加的功能,所以也要勾上。


    2017.12.5新补充:

    在网上看到了一个新的方式,需要iOS10.3+以上,虽然这个方式受到Apple的限制,但是还是值得使用的,主要是用户的体验流程比较好,直接弹出来一个评星框,点了就关闭就好了,先看看这个的效果图:


    当然,我选了星星之后,提交按钮时灰色的,说是需要上线之后才可以点击。

    根据官方的文档说明,这个最好是在某个时机去调用,因为有可能显示不出来,所以一般在游戏进行到一个比较好的阶段,去申请一下比较合适。

    然后看代码:(添加的地方,同上文一样,只是多了一个函数而已,这个没有回调,也没有结果)

    .h

    - (void) showAppStoreReview;


    .mm 这里我加了一些判断,是否支持,或者是否可以显示之类的。

    - (void) showAppStoreReview{
        Class isAllow = NSClassFromString(@"SKStoreReviewController");
        if (isAllow != nil) {
            if([SKStoreReviewController respondsToSelector:@selector(requestReview)]) {
                //防止键盘遮挡
                [[UIApplication sharedApplication].keyWindow endEditing:YES];
                [SKStoreReviewController requestReview];
                UnitySendMessage("GJCNativeShare", "OnShowReviewSuccess", [GJC_DataConvertor NSStringToChar:@"Success"]);
            }else{
                UnitySendMessage("GJCNativeShare", "OnShowReviewReject", [GJC_DataConvertor NSStringToChar:@"Reject"]);
            }
        }else{
            UnitySendMessage("GJCNativeShare", "OnShowReviewFailed", [GJC_DataConvertor NSStringToChar:@"Failed"]);
        }
    }

    .mm 后面添加Unity接口

    extern "C" {
        void _GJC_ShowAppStoreReview() {
            [[GJCSocialShare sharedInstance] showAppStoreReview];
        }
    }

    .cs

    [DllImport ("__Internal")]
    	private static extern void _GJC_ShowAppStoreReview();//---add---


    /// <summary>
    	/// iOS 10.3+ 以上可以使用,直接弹出一个评星框,无参数,是否能显示也不知道,这些都用AppStore控制的
    	/// 我们只需要控制它在什么时机显示
    	/// </summary>
    	public void ShowAppStoreReview(){
    		Debug.Log("Native Open AppStore");
    		#if UNITY_IPHONE && !UNITY_EDITOR
    			_GJC_ShowAppStoreReview();
    		#endif
    	}

    //弹框成功
    	private void OnShowReviewSuccess(string result){
    		Debug.Log("Success: " + result);
    		if (onShowReview != null){
    			onShowReview("Success");
    		}
    	}
    	//弹框失败
    	private void OnShowReviewFailed(string result){
    		Debug.Log("Failed: " + result);
    		if (onShowReview != null){
    			onShowReview("Failed");
    		}
    	}
    	//其他原因被拒绝?
    	private void OnShowReviewReject(string result){
    		Debug.Log("Reject: " + result);
    		if (onShowReview != null){
    			onShowReview("Reject");
    		}
    	}


    在其他 .cs 文件调用

    public void OnShowAppReview(){
    		GJCNativeShare.Instance.ShowAppStoreReview();
    	}

    完成~



















    展开全文
  • Unity实现跳转Appstore 评价 这个很简单就是使用Application.OpenURL(url); 但是需要注意的是url的设置 ,网上很多版本都是过期的链接 所以不建议使用 unity 调用写法如下: #if UNITY_IPHONE || UNITY_EDITOR |...

    Unity实现跳转Appstore 评价
    这个很简单就是使用Application.OpenURL(url);
    但是需要注意的是url的设置 ,网上很多版本都是过期的链接 所以不建议使用
    unity 调用写法如下:

    #if UNITY_IPHONE || UNITY_EDITOR || UNITY_IOS
            const string APP_ID = "1361497551";
            var url = string.Format(
                "itms-apps://itunes.apple.com/cn/app/id{0}?mt=8&action=write-review",
                APP_ID);
            Application.OpenURL(url);
    #endif

    OC 实现如下:XXXXXX 是APP_ID

    NSString *itunesurl = @"itms-apps://itunes.apple.com/cn/app/idXXXXXX?mt=8&action=write-review";
    
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:itunesurl]];
    
    展开全文
  • Unity 跳转第三方App

    2018-06-11 15:11:54
    1.Unity原生方法并没有提供给我们方法,去跳转第三方App。必须通过Android和IOS底层代码来写 2.Android方面比较简单: //打开微信程 public void OpenWXApp() { try //如果手机上安装了微信,就打开微信的主...

    1.Unity原生方法并没有提供给我们方法,去跳转第三方App。必须通过Android和IOS底层代码来写
    2.Android方面比较简单:

    //打开微信程
            public void OpenWXApp()
            {
                try //如果手机上安装了微信,就打开微信的主界面
                {
                    PackageManager packageManager = getPackageManager();   
                    Intent intent=new Intent();   
                    intent = packageManager.getLaunchIntentForPackage("com.tencent.mm"); //填写微信包名 
                    startActivity(intent);
                } 
                catch (Exception e)//如果没有安装就打开一个浏览器去下载
                {
                    e.printStackTrace();  
                    Intent viewIntent = new  
                    Intent("android.intent.action.VIEW",Uri.parse("http://weixin.qq.com/"));  
                    startActivity(viewIntent);          
                }
            }

    3.IOS方面比较复杂
    4.Unity和Android和IOS通信可见我以前的博客

    展开全文
  • MAC中开发Unity3D

    2016-03-23 16:21:29
    一直想做3D开发,去年后半年开始学IOS下的OpenGL,只学会了纹理,而且灯光音效什么的好麻烦,于是想学学Unity3D。 今年年初就计划上了,可是Unity3D收费,费用不便宜呢。用Unity3D开发了游戏也不能上传AppStore,...
  • 最近项目(麻将手游)中遇到这样一个需求:在创建一个私人房后通过ShareSDK分享一个连接到微信,点击这个连接后设备将跳转至下载页面或是启动APP并直接进入到指定房间。由于目前没有原生IOS的开发经验,在发挥面向...
  • 基本unity调用安卓程序,首先需要新建或者打开安卓工程,导入unity的安卓包(或者本来就有,因为咱们公司是做相关sdk的所以是本来就有个安卓sdk工程),再修改代码后导出java包放到unity的Plugins\Andriod\bin\里面...
  • unity 内嵌H5界面需要用到Uniwebview 差件,百度搜索下就可以找到插件下载地址,这里就不提供了 Uniwebview 支持Android 、IOS。 PC平台下不显示,需要打包测试。 下面是封装好的动态加载外部网页类 using ...
  • 基于Unity3D简单UI框架

    2020-07-06 13:42:43
    基于Unity3D和NGUI实现的简单的UI框架,实现内容如下 1.加载,显示,隐藏,关闭页面,根据标示获得相应界面实例 2.提供界面显示隐藏动画接口 3.单独界面层级,Collider,背景管理 4.根据存储的导航信息完成界面导航...
  • 我们可以利用前面说博客说的,直接在Unity这边写代码去实现一些简单的Android功能,那么跳转到各大平台的商店,也是类似的做法。 直接看代码: //跳转到指定应用商店,这里以华为为例 public void OnRateToHuawei...
  • 1、安卓端代码 package ... import android.net.Uri; import android.os.Bundle; import android.util.Log; ...import com.unity3d.player.UnityPlayer;...import com.unity3d.player.UnityPlayerActiv...
  • 附件中有说明文档和Unity工程代码和iOS代码,详细说明了,Unity与iOS之间的通讯和页面之间相互跳转
  • iOS与Unity3d的交互实现

    2016-03-17 16:17:43
    iOS与Unity3d的交互实现 最近在公司写的项目是基于iOS与Unity3d的,之前也写了不少的iOS与Unity的项目,但是这次将两者结合开发还是第一次。项目的第一条功能需求就是:实现从iOS原生界面到Unity的跳转。 看似简单...
  • private void OnGUI() { if (GUI.Button(new Rect(500, 500, 300, 150), "谷歌商店")) { openAPPinMarket(Application.identifier); } if (GUI.Button(new Rect(...
  • Unity 跳转到其他应用

    2018-05-28 10:07:56
    安卓C# void openPackage(string pkgName)//包名 { using (AndroidJavaClass jcPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) { using (AndroidJavaObject...
  • Unity3d接入googleplay内购详细说明(一) 引言 一、准备条件: 二、谷歌开发者后台应用创建说明: Unity3d接入googleplay内购详细说明(二) 三、Unity3d向安卓通信以及接受通信 四、Unity导出安卓Apk正式签名说明...
  • Unity3D导入AS并利用Fragment显示-本文较为详细介绍了,Unity3D项目导入AS,AS中显示Unity3D,利用Fragment显示Unity3D三个问题的主要过程,一些常见错误都在正文中指出,不再单独列出,部分代码也在正文贴出。
  • 被打开端: using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.SceneManagement; using System.IO; using System;...public class OpenGameobject : MonoBehaviour { ...
1 2 3 4 5 ... 20
收藏数 591
精华内容 236
热门标签