应用程序间跳转 (友盟SSO 授权 与系统自带的分享)
应用程序间跳转的应用场景
- 使用第三方用户登录,如微信登录,返回用户名和密码
- 需要用户授权,返回到调用程序,同时返回授权的用户名
- 应用程序推广,跳转到itunes并显示指定app下载页
- 第三方支付,跳转到支付APP,如支付宝,微信钱包
- 显示位置及导航功能时,跳转到第三方地图应用。
- 打电话、发邮件、发短信、打开网页等,跳转到内置APP程序
应用间的跳转:
1.//url :统一资源占位符 http://baidu.com tel://110 file:///apple/storebock
//由 协议头:http:// tel:// file://
// 资源路径:baidu.com
2.如何配置应用程序的URL的协议头: target (项目)- > info > URL Type >URL Schemes
3.APP —A
//跳转到微信APP
- (IBAction)jump {
[self openXiaodiWeiXin:@"xiaodi://"];
}
//跳转到微信好友界面,带上另一个要跳转到的控制器的indentify和自己的Schemes(协议头)
- (IBAction)secttion {
[self openXiaodiWeiXin:@"xiaodi://secttion?Schemes=news"];
}
//跳转到朋友圈界面
- (IBAction)timeLine {
[self openXiaodiWeiXin:@"xiaodi://timeLine"];
}
-(void)openXiaodiWeiXin:(NSString *)URLStr
{
//2.如何配置应用程序的URL的协议头: target (项目)- > info > URL Type >URL Schemes
//1.创建要跳转的应用程序的URL
NSURL *weixinURL = [NSURL URLWithString:URLStr];
//2.判断URL是否可以跳转
if ([[UIApplication sharedApplication]canOpenURL:weixinURL]) {
//跳转到另一个应用程序
[[UIApplication sharedApplication]openURL:weixinURL];
}
}
****************
APP — B
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
//消除动画,会先把当前的控制器压栈,返回会先返回原来的控制器,再返回主页
[nav popToRootViewControllerAnimated:NO];
ViewController *mainVC = [nav.childViewControllers firstObject];
NSString *urlStr = url.absoluteString;
if ([urlStr rangeOfString:@"secttion" ].length) {
//把传过来的Schemes 传到相应控制器(方便跳回原来的APP)
mainVC.appURLStr = urlStr;
//跳转到相应的控制器
[mainVC performSegueWithIdentifier:@"Secction" sender:nil];
NSLog(@"这是通过微信好友打开:%@",url);
}else if ([urlStr rangeOfString:@"timeLine"].length)
{
//跳转到相应的控制器
[mainVC performSegueWithIdentifier:@"TimeLine" sender:nil];
NSLog(@"这是通过微信朋友圈打开的%@",url);
}
return YES;
}
****ViewController.m
//使用UIStoryboardSegue 话,可以利用该方法传值
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([segue.identifier isEqualToString:@"Secction"]) {
SecttionViewController *secttionVC = segue.destinationViewController;
secttionVC.appURLStr = self.appURLStr;
}
}
****相应要跳转的页面实现跳回原来的APP
/回到原来的APP
- (IBAction)BackToApp {
NSString *urlStr = self.appURLStr;
NSRange rangstring =[urlStr rangeOfString:@"xiaodi://secttion?Schemes="];//NSRangeFromString()
NSString *schemesStr = [urlStr substringFromIndex: rangstring.length];
NSLog(@"%@",schemesStr);
NSString *schemesString = [NSString stringWithFormat:@"%@://",schemesStr];
NSURL *schemesUrl =[NSURL URLWithString:schemesString];
if ([[UIApplication sharedApplication]canOpenURL:schemesUrl]) {
[[UIApplication sharedApplication]openURL:schemesUrl];
}
}
//****************************************************
1.利用系统自带做分享 (看工程 友盟分享)
//1.测试平台是否可用
if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
NSLog(@"新浪微博分享是否成功,如果没有 请 设置界面 》新浪微博 》 设置新浪微博ID ");
}
//2.创建SLComposeViewController
SLComposeViewController *composeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
//设置发送的文字
[composeViewController setInitialText:@"千年等一回,不要错过"];
//设置发送的图片
[composeViewController addImage:[UIImage imageNamed:@"SSO"]];
//弹出发送界面
[self presentViewController:composeViewController animated:YES completion:nil];
//设置分享成功与取消的提醒
composeViewController.completionHandler = ^(SLComposeViewControllerResult result)
{
if (result == SLComposeViewControllerResultCancelled) {
NSLog(@"用户取消了分享");
}else
{
NSLog(@"用户点击了发送");
}
};
友盟SSO授权分享:
什么是SSO的授权方式呢?
大家常说的SSO的授权方式,其实全称是Single Sign-On,就是利用新浪微博、QQ空间、手机QQ和Facebook客户端来完成授权。对于用户来说可以省去输入账号密码,更方便安全,因此各大平台均建议开发者优先使用这一种授权方式。ShareSDK目前支持以下平台的SSO:新浪微博、腾讯微博、QQ空间、facebook、Pocket.
网址:http://dev.umeng.com/social/android/operation
当要用很自己手机的已经安装的软件进行分享某篇文章图片小视屏等等都可以使用
应用程序间跳转 (友盟SSO 授权 与系统自带的分享)的更多相关文章
- 微信小程序小结(4) -- 分包加载及小程序间跳转
分包加载 某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载(主要是空间不够用,哈哈~). 在构建小程序分包项目时,构建会输出一个或多个功能的分包,其中 ...
- iOS 程序间跳转传参(支付和地图)
两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...
- 友盟错误日志分析(转自:COCOACHINA shemy )
在做的项目中,用到了友盟的组件,在没有禁用错误日志上传之前,收集了一些错误日志. 有一些朋友看到了错误日志,却不知道怎么定位到程序的的代码中,实际上,这一步是非常的简单.友盟没有集成.dSYM文件 ...
- Android之友盟多渠道打包与数据统计
文章大纲 一.多渠道打包与数据统计介绍二.友盟实现多渠道打包实战三.友盟数据统计实战四.项目源码下载五.参考文章 一.多渠道打包与数据统计介绍 多渠道打包,相信很多同学都知道.在Android ...
- iOS 友盟推送,应用内推送启动图推送闪动黑屏,插屏推送方法报错
以前都是用的极光推送,应公司需求要求使用友盟推送,为了以后是有分享都适用,,, 友盟推送文档,下载demo 感觉比极光用着要简单顺手 一切就绪后,开始发送消息测试,,,,,搞了半天没有发过来消息 原来 ...
- cocos2dx集成友盟社会化分享图片崩溃问题
本人不懂oc,一步一步按照友盟的文档做,好不容易把分享做好了,结果在 分享图片的时候宕掉了.各种测试,搞了一下午终于搞定了. 如下是友盟文档的做法,错误就在[UIImage imageNamed:@& ...
- 使用openURL实现程序间带参数跳转详解
使用openURL实现程序间带参数跳转详解 实现的效果:有两款应用A与B,A打开B A --> B 1. 新建工程B,bundle ID为com.YouXianMing.B 建立一个URL 这么 ...
- 微信小程序里如何使用npm?小程序集成友盟举例
1.执行npm初始化指令 小程序根目录,命令执行如下指令: npm init 执行后会让加载项目初始信息,具体截图如下: 2.执行安装npm包指令 在这我们举个例子,以接入友盟统计SDK为例,执行命令 ...
- Android集成友盟社会化分享功能
1. 产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪 ...
随机推荐
- vim 打开高亮和关闭高亮
:set hls 找开高亮 :set nohls 关闭高亮
- Redis笔记(五)Redis的事务
>>关系型数据库的事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消. Atomic(原子性): 一个事务(transaction)中的 ...
- Linux性能分析工具的安装和使用
转自:http://blog.chinaunix.net/uid-26488891-id-3118279.html Normal 0 7.8 磅 0 2 false false false EN-US ...
- android 入门-防微信拍摄视频 按钮事件处理
package com.cc.view; import com.cc.R; import com.cc.R.layout; import com.cc.R.menu; import android.o ...
- 笔记本win7共享WIFI
创建无线网络 (1)netsh wlan set hostednetwork mode=allow ssid=网络名 key=密码 启动承载网络(2)netsh wlan start hostedne ...
- WORD2007多级列表
转自玄鸟翩翩 http://hi.baidu.com/shine_yen http://hi.baidu.com/shine_yen/item/01ff2255043bc1aeacc85722 用Wo ...
- LoadRunner检查点学习实例
LoadRunner只会检测脚本中事务的执行状态,而实际的事务执行结果则需要通过检查点来完成. 例如一个登录事务,LR只关心事务本身的执行状态,也就是说哪怕实际操作密码错误产生登录失败的业务操作,其事 ...
- 【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】
内网穿透外网的那一篇,参正集1 但是每次都要Ctrl+R 启动DOS窗口,也就是CMD,一句一句的去粘,略显繁琐. 所以将这些任务写在JAVA程序中,启动一次程序就可以实现[内网穿透]的功能,多好啊! ...
- 【maven】 pom.xml详解
pom.xml详解 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- 最值得学习的10个C语言开源项目
最好别下载最新版,因为代码量比较大,可以下载很早的版本 搜索词:开源 C Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我 ...