Unity调用IOS的StoreKit实现在游戏内部的对游戏进行星级评价和评论

废话不多说直接上代码。

一 Xcode端的OC代码

在Xcode里面新建一个空的工程(不会搞的百度一下),然后创建一个.h和.m文件,记住要把.m的后缀改成.mm(.mm文件和.m文件的区别就是:.mm文件除了可以包含Objective-C和C代码以外,还可以包含C++代码),这个类要继承自NSObject

.h代码如下:

//
//  UnityStoreKit.h
//  UnityStoreKit
//
//  Created by mac on 2017/12/14.
//  Copyright ? 2017年 mac. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <StoreKit/StoreKit.h>

@interface UnityStoreKit : NSObject

@end

.mm代码如下:

//
//  UnityStoreKit.m
//  UnityStoreKit
//
//  Created by mac on 2017/12/14.
//  Copyright ? 2017年 mac. All rights reserved.
//

#import "UnityStoreKit.h"

@implementation UnityStoreKit
#if defined(__cplusplus)
extern "C"{
#endif
    void _goComment()
    {
        if([SKStoreReviewController respondsToSelector:@selector(requestReview)]) {// iOS 10.3 以上支持
            [SKStoreReviewController requestReview];
        } else { // iOS 10.3 之前的使用这个
            NSString *appId = @"1280215473";
            NSString  * nsStringToOpen = [NSString  stringWithFormat: @"itms-apps://itunes.apple.com/app/id%@?action=write-review",appId];//替换为对应的APPID
            [[UIApplication sharedApplication] openURL:[NSURL URLWithString:nsStringToOpen]];
        }
    }
#if defined(__cplusplus)
}
#endif

@end

在软件内部进行星级评价是在IOS10.3之后的新特性。我们将这俩个文件导出到Unity里面的plugins文件夹下。把这个俩个文件所依赖的StoreKit在Unity里面给勾选上(勾上之后Unity打包成XCode文件的时候会自动把这个库给引用上)并且平台选择成IOS平台(这样打包成IOS的时候才会打包这俩个文件)。如下图所示:

二 Untiy里面的调用代码

using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
public class UnityStoreKitMgr : MonoBehaviour {

	private static UnityStoreKitMgr _instance;
	public static UnityStoreKitMgr Instance{
		get{
			if(_instance==null)
			{
				GameObject go= 	new GameObject ("UnityStoreKitMgr");
				_instance=go.AddComponent<UnityStoreKitMgr> ();
				DontDestroyOnLoad (go);
			}
			return _instance;
		}
	}

    [DllImport("__Internal")]
	private static extern void _goComment();
	public  void GoToCommnet()
	{
		#if UNITY_IPHONE
		   _goComment();
		 #endif
	}

}

 [DllImport("__Internal")]

这个我也不是很清楚。。反正就是扩展那一类的貌似是调用dl的一些函数(必写)

_goComment()必须和.mm文件里面的函数要一样。

三 IOS回调Untiy

只有一个方式:

UnitySendMessage("UnityStoreKitMgr","onCancel","params");

第一个参数:调用的Unity函数所在脚本绑定的游戏物体

第二个参数:调用的Unity函数名称

第三个参数:调用的Unity函数参数(只能是字符串类型,和android一样)

时间: 2024-10-02 07:04:26

Unity调用IOS的StoreKit实现在游戏内部的对游戏进行星级评价和评论的相关文章

Unity与iOS原生代码之间的相互调用

效果: 代码: [GitHub]Unity_iOS_Plugin_Demo 关键: 1.Unity调用iOS: 1.1.在Unity C#中: [ DllImport( "__Internal" )] private static extern int _showSelectTitleDialog ( string title, string msg); 1.2.在Xcode Objective-C中: extern "C" { int _showSelectTit

unity与ios交替

unity和ios的相互作用是更简单的.直接出口xcodeproject,这个大家都知道如何操作,如果需要二次开发ios码成unity,事实上,整合非常easy找到出口xcodeproject内iPhone_View.mm中间OnUnityReady()方法.unityios中一个view,[GetAppController()showGameUI:_mainDisplay->window];载入游戏视图,这种方法在UnityAppController中,- (void)showGameUI:(

Unity调用原生(iOS, Android)方法

Unity调用原生程序方法,定义接口(doTestSelector): using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class TestScript : MonoBehaviour { // This tells unity to look up the function FooPluginFunction // inside the static binary

【转载】Unity 优雅地管理资源,减少占用内存,优化游戏

转自:星辰的<Unity3D占用内存太大的解决方法> 最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大. Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的. 其实场景里所有静

Unity与IOS交互

转自:http://www.cnblogs.com/alongu3d/p/3674174.html 环境:Mac os 10.9.2  Unity 4.2.1f4   Xcode 5.0.2 Unity IOS的交互我写过一个教程,当时我用的是Unity4.0,和现在的版本不太一样了! 链接是http://www.cnblogs.com/alongu3d/p/3279277.html 1.首先在unity的脚本中定义如下 其中,CallU3D是静态方法,供unity3d调用的! 2.导出ios工

unity与iOS、Android交互

1.Unity调iOS的方法 在首页的viewcontroller里面实现方法 void _PressButton3(const char *args) { //  UnityAppController *unityapp = (UnityAppController *)[UIApplication sharedApplication].delegate; // [unityapp ShowWindowssubview]; } 在Unity里面 直接调用 _PressButton3(conten

[实用工具]Unity调用外部EXE或Shell命令

版权所有,转载须注明出处!喜欢火影.喜欢Java.喜欢unity3D.喜欢游戏开发的都可以加入木叶村Q群:379076227 1.开门见山的需求有的时候,我们想把一些外部命令集成到unity中,比如,你想通过点击Unity中的一个按钮,就更新SVN(假设该项目是受SVN管理的).那么,就涉及到一个Unity调用外部可执行文件.bat/shell等.这个需求是挺常见的,也是不难实现的. 2.简单明了的实现我们先封装一个命令调用的函数: [C#] 纯文本查看 复制代码 ? 01 02 03 04 0

Unity调用Android配置方法

方法一:发布eclipse android工程(如图勾选),如同IOS发布xcode一样,在eclipse中编写调用 方法二: 操作过程配置要点: 1.新建Android工程,注意包路径比如我的是com.zx,其他步骤直接下一步完成 2.勾选Mark this project as a library 3.新建Android工程编写相关接口方法后,复制bin文件(只需要zx.jar).res资源包.AndroidMainfest.xml配置文件 4.复制到Unity工程中Plugins/Andr

unity 引入 ios 第三方sdk

原地址:http://blog.csdn.net/u012085988/article/details/17785023 unity开发中ios应用时,要想成功引入第三方sdk,首先得知道c#与object-c如何交互.这里有篇博文介绍了unity开发中,如何实现c#与oject-c互相调用. http://blog.csdn.net/u012085988/article/details/17761433 下面介绍下unity开发ios应用中,引入第三方sdk的流程: 1.将sdk中要用到的接口