应用程序间跳转 (友盟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增加新浪 ...
随机推荐
- sshd_conf AllowUsers参数
AllowUsers root user1 user2 #服务器只允许root user1 user2登录,再的新也用户产生,是不允许豋录服务器 配置文件在/etc/ssh/sshd_confing ...
- CLR via C#学习笔记---类型
类的内存分配:http://www.cnblogs.com/JimmyZhang/archive/2008/01/31/1059383.html 关键字: abstract (类)该类不能构建 ...
- Delphi开发中各种文件扩展名代表什么文件
暂时就遇到了以下这几种,以后遇到再进行补充 .DPR Delphi Project文件,打开这个文件,就会打开所有的编程的代码文件.包含了Pascal代码 .PAS Pascal文件,Pascal单元 ...
- 在python中使用concurrent.futures实现进程池和线程池
#!/usr/bin/env python # -*- coding: utf-8 -*- import concurrent.futures import time number_list = [1 ...
- 【131031】rel 属性 -- link标签中的rel属性,定义了文档与链接的关系
此属性通常出现在a,link标签中 属性值 Alternate -- 定义交替出现的链接 Alternate 属性值 -- alternate是LinkTypes的一个值,网页设计者可以通过此值,设计 ...
- c++ 的 static_cast
http://www.cnblogs.com/pigerhan/archive/2013/02/26/2933590.html #include "Person.h" #inclu ...
- eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Serv ...
- update comboBox
/// <summary> /// AutoCompleteComboBox /// </summary> public class AutoCompleteComboBox ...
- 【JDK】电脑上安装多个JDK ,修改JAVA_HOME后没有作用
电脑上装了 C:\Program Files\Java\jdk1.6.0_43 C:\Program Files\Java\jdk1.7.0_80 C:\Program Files\ ...
- JMeter监控Linux服务器资源案例
JMeter是一款压力测试工具,我们也可以用它来监控服务器资源使用情况.JMeter正常自带可以通过Tomcat的/manager/status来监控服务资源使用情况.这种情况只能监控Tomcat支持 ...