unity调用ios的剪贴板

参考博客 http://www.cnblogs.com/xiaozefeng/p/Unity_Android_IOS.html?utm_source=tuicool&utm_medium=referral

本文基于unity 5.3.5 xcode 7.3  我参照 枫露霜阳 大牛的博客实现的,做了部分修改和整理,

关于unity和ios的交互问题,必须要用unity 的 c# 代码调用 ios 中的 c 代码,再用 c 调用ios的 oc 代码。最近也对unity在ios设备中的view跳转问题小有研究,不久便会写出来给大家看看,共同学习。

下面是代码部分,

@ interface Clipboard : NSObject

extern "C"
{
    /*  接口方法  */
    void _copyTextToClipboard(const char *textList);
}

@end
这个是Clipboard.h文件,这里的方法,就会在unity的c#代码中调用

#import "Clipboard.h"
@implementation Clipboard
//将文本复制到IOS剪贴板
- (void)objc_copyTextToClipboard : (NSString *)text
{
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    pasteboard.string = text;
}
@end

extern "C" {
    static Clipboard *iosClipboard;
    
    void _copyTextToClipboard(const char *textList)
    {
        NSString *text = [NSString stringWithUTF8String: textList] ;
        
        if(iosClipboard == NULL)
        {
            iosClipboard = [[Clipboard alloc] init];
        }
        
        [iosClipboard objc_copyTextToClipboard: text];
    }
    
}
这是 Clipboard.mm文件,因为.m文件不能写 c 。在xcode中编写的时候不要担心错误问题,这点请教过 枫露霜阳大牛的。

ok,ios中的代码部分已经完成,这两个文件要放到,(你的工程目录/Assets/Plugins/iOS/)文件夹下面。这样打包的时候会放到xcode的libraries文件夹里面。

然后就是在unity中的c#代码。

首先是在接口文件****.cs文件中声明接口

#if UNITY_IPHONE
[DllImport("__Internal")]
	public static extern void _copyTextToClipboard(string text);//对ios剪切板的调用
#endif
然后是方法内容,unity中需要调用的方法,

	//剪切文本
	public static void CopyToClipboard(string input)
	{
		#if UNITY_ANDROID
	// 对Android的调用
		AndroidJavaObject androidObject = new AndroidJavaObject("ClipboardTools");     
		AndroidJavaObject activity = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity");

		if (activity == null)
			return ;
		// 复制到剪贴板
		androidObject.Call("copyTextToClipboard", activity, input);

		// 从剪贴板中获取文本
////		String text = androidObject.Call("getTextFromClipboard");


		#elif UNITY_IPHONE
		//调用clipboard.h中的接口
		_copyTextToClipboard (input);
	Debug.LogError ("CopyToClipboard_______"+input);
		#endif
	}

其中的安卓方法见我另一篇博客,也是参考 枫露霜阳的方法实现的。

如此就是在需要的用的时候 

******.CopyToClipboard (sign.text);

这样就实现了。

一直信仰这句话,前人栽树后人乘凉,感谢大牛的经验分享,努力成为那样的人。




你可能感兴趣的:(unity调用ios的剪贴板)