URL Scheme
Android URL Scheme
MainActivity中初始化加入代码,接受网页传递过来的URL Scheme,并解析URL
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String scheme =intent.getScheme();
String dataString =intent.getDataString();
Uri uri = intent.getData();
Log.e("unity","scheme "+ scheme);
if (uri != null){
String url = uri.toString();
String scheme1 =uri.getScheme();
String host = uri.getHost();
int port = uri.getPort();
String path = uri.getPath();// 访问路劲
// List<String>pathSegments = uri.getPathSegments();
String query =uri.getQuery();// Query部分
String goodsId = uri.getQueryParameter("goodsId"); //获取指定参数值
Log.e("unity", "url: " + uri);
Log.e("unity", "scheme1 :" + scheme1);
Log.e("unity", "host: "+ host);
Log.e("unity", "host: "+ port);
Log.e("unity", "path: "+ path);
Log.e("unity", "query:" + query);
Log.e("unity", "goodsId:" + goodsId);
}
}
在AndroidMainFest.xml中配置一下文件
<activity >
<intent-filter><!--正常启动-->
<action android:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
<categoryandroid:name="android.intent.category.LEANBACK_LAUNCHER"/>
</intent-filter>
<intent-filter><!--URLScheme启动-->
<!--必有项-->
<actionandroid:name="android.intent.action.VIEW" />
<!--如果希望该应用可以通过浏览器的连接启动,则添加该项-->
<categoryandroid:name="android.intent.category.BROWSABLE" />
<!--表示该页面可以被隐式调用,必须加上该项-->
<categoryandroid:name="android.intent.category.DEFAULT" />
<dataandroid:scheme="symphony" android:host="goods"android:path="/Details" android:port="8080"/>
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity"android:value="true"/>
<meta-data android:name="REKOO_CHANNEL"android:value="googleplay" />
</activity>
Unity 中代码调用
local url = "http://friend.php?"—自己做的跳转链接界面,为了防止玩家直接看URLscheme
local url1 = "http://line.me/R/msg/text/?啊哈哈哈哈哈哈「下载链接urlscheme」「"
local url2 = url.."pid="..uuid.."」"
Application.OpenURL(url1..url2)
ios URL Scheme
设置URLscheme
通过第三方APP打开分享的链接,进入游戏时自动调用这个接口,接口写在appdelegate.m(网上说的,我是没有appdelegate.m,就写在了UnityAPPController.mm)里面
- (BOOL)application:(UIApplication*)applicationopenURL:(NSURL*)url sourceApplication:(NSString*)sourceApplicationannotation:(id)annotation
{
NSLog(@"sourceApplication: %@",sourceApplication);
NSLog(@"URL scheme:%@", [urlscheme]);//设置的scheme
NSLog(@"URL query: %@", [urlquery]);//获取到的URLscheme参数
// ToGameEvent(43, [url scheme]);//将参数发送到unity,进行下一步处理
return YES;
}
最后的URLscheme为 symphony://
由于个人的项目中,UnityAPPController.mm是自动生成的,无法在其中编写代码,就在别处添加调用
UnityAppController.WriteBelow("NSMutableArray*values = [NSMutableArrayarrayWithCapacity:3];", " //好友招待传递过来的参数\n NSLog(@\"URLscheme:%@\", [url scheme]);\n NSLog(@\"URL query: %@\", [url query]);\n NSString *param = [NSStringstringWithFormat:@\"%d#data=%@\",43,[url query]];\n 调用和SDK交互的接口,将参数传到unity中;