最近在做一个新的二次元游戏App,说真的第一次做游戏一开始有点压力,但是后面了解到用到的技术其实跟游戏没有太多关系,就巴拉巴拉的开始写了,但是由于只有一个人,项目赶着上线,再加上之前需求的不明确和中途的调整,导致期间也浪费了不少时间,最近在实现最后一个功能的时候遇到了点问题,一开始是我想的太复杂了,后面群里一问,网上一了解,发现:MMP,这么简单,说多了都是尿,于是记录了这一切……..
前言
本文的起因:
新项目,一个人纯swift开发,有个小功能第一次遇到,就是在用户中心有一行显示(群号+点击加群)文案,点击这一行拉起QQ App,如果QQ APP所登录的QQ已经加入了QQ号就直接到群聊页面,如果没有就跳到加群页面,可以点击申请加群。
注意: 这里其实是打开QQ后,使用QQ来去打开了一个网页。
下面上代码:
一下是朋友提供的OC代码
- (NSURL*)getQQQunUrl {
NSString *qq_number = @"??"
NSString* urlStr = [NSString stringWithFormat:@"mqqapi://card/show_pslcard?src_type=internal&version=1&uin=%@&key=%@&card_type=group&source=external", qq_number, @"44a6e01f2dab126f87ecd2ec7b7e66ae259b30535fd0c2c25776271e8c0ac08f"];
return [NSURL URLWithString:urlStr];
}
调用方式:
NSURL* url = [self getQQqunUrl];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
这是我最终Swift的实现方式
func getQQQunUrl() -> String {
let qq_number = "??"
let url_str = "mqqapi://card/show_pslcard?src_type=internal&version=1&uin=\(qq_number)&key=44a6e01f2dab126f87ecd2ec7b7e66ae259b30535fd0c2c25776271e8c0ac08f&card_type=group&source=external"
return url_str
}
调用方式:
let urlString = self.getQQQunUrl()
if let url = URL(string: urlString) {
//根据iOS系统版本,分别处理
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:], completionHandler: { (success) in })
} else {
UIApplication.shared.openURL(url)
}
}
只要替换以上QQ好就可以,看着代码是不是很简单,算了不说了,我都想静一静……
来看看效果图:
加群之前的效果
加群之后的效果
QQ号调整
最近又有一个新的需求,由于需求比较相似,于是我直接在这里追加了。
需要处理QQ号的跳转,点击直接打开QQ调用网页版加号或者聊天页面
其实功能并没有任何难度在,其实寻找对应的链接,替换内部信息就可以。
一下只提供OC和Swift的关键代码:
OC的实现方式
//qqNumber就是你要打开的QQ号码, 也就是你的客服号码。
NSString *qqNumber=@"QQ号";
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"mqq://"]]) {
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero];
NSURL * url=[NSURL URLWithString:[NSString stringWithFormat:@"mqq://im/chat?chat_type=wpa&uin=%@&version=1&src_type=web",qqNumber]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
webView.delegate = self;
[webView loadRequest:request];
[self.view addSubview:webView];
}
Swift的实现方式
// 打开Url
class func openOuterUrl(_ url: String) {
if let url = URL(string: url) {
//根据iOS系统版本,分别处理
if UIApplication.shared.canOpenURL(url) {
//根据iOS系统版本,分别处理
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:],
completionHandler: { (success) in })
} else {
UIApplication.shared.openURL(url)
}
}
}
}
class func getQQUrl() -> String {
let url_str = "mqq://im/chat?chat_type=wpa&uin=\(self.getQQ())&version=1&src_type=web"
return url_str
}