深入解析:iOS应用开发最佳实践与技巧

更新:11-21 现代故事 我要投稿 纠错 投诉

本篇文章给大家谈谈深入解析:iOS应用开发最佳实践与技巧,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

二、申请第三方账号

1.新浪微博

登录新浪微博开放平台(点击链接),填写相关申请信息并上传图标图片。注意安全域名修改为sns.whalecloud.com同时设置授权回调页为http://sns.whalecloud.com/sina2/callback。安全域名在“申请信息-基本信息”中设置。

新浪帐号申请界面.jpg.png

授权回调页面和取消授权回调页面在“应用信息-高级信息”中设置。

新浪设置回调页面.png 安全域名的修改需要二次审核才能生效,授权回调页面的修改立即生效。

2.微信

登录微信开放平台(点击链接),填写相关申请信息,并获取微信AppID和AppSecret,如果需要微信登录功能,需要申请微信登录权限。

3.QQ及Qzone

QQ和Qzone使用相同的AppID和Appkey,登录腾讯开放平台(点击链接),选择移动应用,填写相关申请信息并提交审核。在审核通过之前,您只能使用测试账号。添加测试账号的方法如下:选择用户能力--高级社交能力--应用调试器,添加的测试账号必须在申请者的好友列表中。

添加测试账号.png

4.人人网

登录人人开放平台(点击链接),填写相关申请信息,申请根域名填写为sns.whalecloud.com。具体位置为: 基本信息--申请根域名。

人人网基本信息.png

5.豆瓣

登录豆瓣开放平台(点击链接),创建申请并填写相关申请信息。注意权限必须广播,回调地址填写为http://sns.whalecloud.com/douban/callback。

豆瓣回调地址.png

Douban api.png

三、绑定第三方账号到友盟后台

目前友盟后台需要绑定的第三方账号有:新浪微博、腾讯微博、人人网、豆瓣、QQ空间,微信、QQ等其他平台直接在代码中设置。

绑定地址:http://umeng.com/apps

登录友盟网站——选择你的产品——组件——社交组件——左上角设置。

添加友盟backend.png

1.短链接开关

短链接切换仅对新浪微博、腾讯微博、人人网、豆瓣有效。如果打开短链接开关,分享文案附带的链接将会被转码,并且可以统计分享回报率(链接的点击次数)。如果关闭短链路开关,则无法统计统计数据。短链路开关默认关闭。

2.文字截断开关

文本截断开关仅对新浪微博、腾讯微博、人人网、豆瓣有效。它也仅对使用自定义共享编辑页面或没有共享编辑页面的用户有效。当共享副本超过字数限制时自动截断,开关状态默认为关闭。

四、适配iOS9系统

在新发布的iOS9系统上,围绕用户数据的安全和体验增加了一些新的安全功能,这也影响了应用的实现和集成。为了保证良好的稳定性和体验,需要进行以下处理:

1.HTTP传输安全

使用iOS9 SDK编译的项目将默认使用SSL安全协议进行网络传输,即HTTPS。如果仍然使用HTTP协议请求网络,会报系统异常,请求中断。目前,使用HTTP协议维护网络连接有以下两种方法:

A.将安全域名白名单添加到info.plist中(右键info.plist,用源码打开)

NSAppTransportSecurityNSExceptionDomainslog.umsns.comNSIncludesSubdomainsNSTemporaryExceptionAllowsInsecureHTTPLoadsNSTemporaryExceptionMinimumTLSVersionTLSv1.1sns.whalecloud.comNSInincludesSubdomainsNSTemporaryExceptionAllowsInsecureHTTPLoadsNSTemporaryExceptionMinimumTLSVersionTLSv1 .1sina.cnNSInincludesSubdomainsNSThirdPartyExceptionRequiresForwardSecrecy weibo.cnNSInincludesSubdomainsNSThirdPartyExceptionRequiresForwardSecrecyweibo.comNSInincludesSubdomainsNSThirdPartyExceptionAllowsInsecureHTTPLoadsNSThirdPartyExceptionRequiresForwardSecrecysinaimg.cnNS IncludesSubdomainsNSThirdPartyExceptionAllowsInsecureHTTPLoadsNSThirdPartyExceptionRequiresForwardSecrecysinajs.cnNSIncludesSubdomainsNSThirdParty ExceptionAllowsInsecureHTTPLoadsNSThirdPartyExceptionRequiresForwardSecrecysina.com.cnNSInincludesSubdomainsNSThirdPartyExceptionAllowsIn secureHTTPLoadsNSThirdPartyExceptionRequiresForwardSecrecyqq.comNSInincludesSubdomainsNSThirdPartyExceptionAllowsInsecureHTTPLoadsNSThirdPartyExceptionRequiresForwardSecrecyrenren.comNSInincludesSubdomainsNSThirdPartyExceptionAllow sInsecureHTTPLoadsNSThirdPartyExceptionRequiresForwardSecrecyfacebook.com NSInincludesSubdomainsNSExceptionRequiresForwardSecrecyfbcdn.netNSInincludesSubdomainsNSExceptionRequiresForwardSecrecyakamaihd.netNSInincludesSubdomainsNSExceptionRequiresForwardSecrecytwitter.comNSIncludesSubdomainsNSExceptionRequiresForwardSecrecy 注意:上述一些平台有官方并未给出相应信息。该列表是由测试各个平台的技术人员收集的。如有遗漏,请自行补充并向客服说明,我们会进一步补充。

B、在info.plist中NSAppTransportSecurity下添加NSAllowsArbitraryLoads并设置为YES,指定所有HTTP连接都可以正常请求http://dev.umeng.com/social/ios/ios9

NSAppTransportSecurityNSAllowsArbitraryLoads

2.应用跳转(SSO等)

如果您的应用程序使用了SSO授权登录或跳转共享等功能,则需要在iOS9下添加可跳转白名单,并指定跳转App对应的URLScheme。否则将在第三方平台进行评判。跳转时是否使用canOpenURL返回NO,然后只有webview授权或授权/共享失败。

另外在info.plist中添加:

LSApplicationQueriesSchemeswechatweixinsinaweibohdsinaweibosinaweibossoweibosdkweibosdk2.5mqqapimqqmqqOpensdkSSoLoginmqqconnectmqqopensdkdatalinemqqopensdkgrouptribesharemqqopensdkfriendmqqopensdkapimqqopensdkapiV2mqqopensdkapiV3mq zoneopensdkwtloginmqqwt loginmqq2mqqwpamqzonemqzonev2mqzonesharewtloginqzonemqzonewxmqzoneopensdkapiV2mqzoneopensdkapi19mqzoneopensdkapimqqbrowsermttbrowserrenreniosrenrenapirenrenrenreniphonelaiwangssoyixinyixinopenapiinstagramwhatsapplinefba pifb-messenger-apifbauth2fbshareextension 注意:以上平台均未正式给出相应的白名单。它们是由测试每个平台的技术人员收集的。如有遗漏,请自行添加并向客服说明,我们将进一步补充清单。

3. 应用瘦身(App Thining)

iOS9 SDK增加App瘦身功能。有关详细信息,请参阅应用程序精简。目前各个第三方平台都支持App瘦身,所以为了正常使用第三方SDK和共享SDK,需要在BuildSetting中关闭Enablebitcode,或者设置编译标志ENABLE_BITCODE=NO。

注意:bitcode仅在Xcode7及以上版本中显示,并且默认启用。

五、下载并安装SDK

1.使用cocoaPods

如果您想使用CocoaPods,请在Podfile 中添加一行包含以下内容:

pod "UMengSocial", "~5.0" 然后安装

Pod 安装

2.下载SDK

http://dev.umeng.com/social/ios/sdk-download

3.设置友盟apply

获取友盟Appkey。如果您之前已经在友盟注册过应用程序并获得Appkey,您可以继续使用之前获得的Appkey。如果您还没有注册友盟账号,需要先注册。注册后,登录您的帐户并单击“添加新申请”即可完成新申请。填写完毕后,您将进入应用管理页面。您可以在此页面获取Appkey。在代码中设置你的友盟AppKey,并在AppDelegate文件中设置你的AppKey:#import "UMSocial.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

[UMSocialData setAppKey:@"你的友盟appKey"];

//使用以下代码打开我们的SDK,在控制台输出后可以看到对应的错误码。

[UMSocialData openLog:YES];

}并在下面添加系统回调方法:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options{

返回[UMSocialSnsServicehandleOpenURL:url];

}

六、配置URL schemes

1.为什么要配置 URL schemes

URL schema 与跳出应用后返回应用的逻辑相关。因此,如果您在QQ、微信、webview模式下使用SSO授权功能或Facebook,则必须配置URL schema,否则跳出应用后将无法返回。

2. 如何设置 URL schemes

在项目设置中的目标列下,选择您的目标并在信息URL 类型中添加URL 方案。如果您使用的是Xcode3或更低版本,则需要将其添加到plist文件中。各平台appkey或appid的获取方法请参考各平台绑定的分享详细文档。各平台的url schema格式如下:

平台| url schema设置格式||

------------------|----------------|

新浪微博| “wb”+新浪appkey,如“wb126663232” |

微信|微信应用appId,如“wxd9a39c7122aa6516” |

人人网| “rm”+您的应用程序包ID,例如“rmcom.umeng.SocialSDK”|

QQ、QQ空间|需要添加两个URL方案1.“QQ”+腾讯QQ互联网应用appId转换为16进制(不足8位则在前面加0),如“QQ05FC5B14”。如何生成十六进制:单击链接。 2.“腾讯”+腾讯QQ互联网应用ID,如“tencent100424468” |

对于来旺| Identifier填写“来往”,URL Schemes填写来往AppId。注意,使用来王SDK后,需要在Xcode项目中的其他链接器标志中添加-ObjC参数|

易鑫|易信Appkey,如“yx35664bdff4db42c2b7be1e29390c1a06” |

脸书|集成最新Facebook SDK适用于iOS7.0及以上版本。如果您想使用我们提供的facebook分享,您需要设置“fb”+facebook AppID,如“fb1440390216179601”|

七、第三方登录

1.第三方登录概述

第三方登录主要用于简化用户登录流程,通过用户的微博、QQ、微信等第三方账号登录,构建APP自己的登录账号系统。

实现第三方登录主要涉及以下两个步骤:

在第三方平台完成授权,获取第三方平台

1.1第三方登录支持的平台

的accesstoken信息和用户信息。目前友盟社交组件支持的第三方登录平台有:新浪微博、微信、QQ、QQ空间、腾讯微博、人人网、豆瓣、Facebook、Twitter。

2.新浪微博登录

在AppDelegate应用程序入口方法中添加以下方法:

//设置分享到QQ/Qzone的应用ID,并分享url链接

#import "UMSocialQQHandler.h"

[UMSocialSinaSSOHandler openNewSinaSSOWithAppKey:@"新浪appkey"

Secret:@"新浪秘密"

RedirectURL:@"http://sns.whalecloud.com/sina2/callback"];在新浪微博登录按钮中实现如下方法:

UMSocialSnsPlatform *snsPlatform=[UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToSina];

snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//获取微博用户名、uid、token等

if (response.responseCode==UMSResponseCodeSuccess) {

UMSocialAccountEntity *snsAccount=[[UMSocialAccountManager SocialAccountDictionary] valueForKey:UMShareToSina];

NSLog(@"用户名是%@,uid是%@,令牌是%@ url是%@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

}});要删除授权,请调用以下方法:

[[UMSocialDataService defaultDataService] requestUnOauthWithType:UMShareToSina finish:^(UMSocialResponseEntity *response){

NSLog(@"响应是%@",响应);

}];

3.QQ及Qzone登录

QQ登录仅支持SSO登录方式。您必须有手机QQ客户端。 Qzone默认调用SSO登录。

添加配置文件参考文档:添加QQ和Qzone,添加相关库文件,配置URL方案和添加系统回调,在AppDelegate应用入口方法中添加如下方法:

//设置分享到QQ/Qzone的应用ID,并分享url链接

#import "UMSocialQQHandler.h"

[UMSocialQQHandler setQQWithAppId:@"QQ id" appKey:@"QQ申请" url:@"http://www.umeng.com/social"];在QQ登录按钮中实现如下方法:

UMSocialSnsPlatform *snsPlatform=[UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ];

snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//获取微博用户名、uid、token等

if (response.responseCode==UMSResponseCodeSuccess) {

UMSocialAccountEntity *snsAccount=[[UMSocialAccountManager SocialAccountDictionary] valueForKey:UMShareToQQ];

NSLog(@"用户名是%@,uid是%@,令牌是%@ url是%@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

}});在Qzone登录按钮:中实现以下方法

UMSocialSnsPlatform *snsPlatform=[UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQzone];

snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

//获取微博用户名、uid、token等

if (response.responseCode==UMSResponseCodeSuccess) {

UMSocialAccountEntity *snsAccount=[[UMSocialAccountManager SocialAccountDictionary] valueForKey:UMShareToQzone];

NSLog(@"用户名是%@,uid是%@,令牌是%@ url是%@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

}}); SDK5.0及以后版本,授权后会直接返回用户信息,所有用户信息都可以在snsAccount中获取。 QQ空间将UMShareToQQ替换为UMShareToQzone。010 -1010 添加配置文件参考文档:添加微信和朋友圈、添加相关库文件、配置URL方案、添加系统回调:

需要注意的是,使用微信登录必须先在微信开放平台申请微信登录权限。

在你程序的APPdelegate入口方法中添加以下代码:#import "UMSocialWechatHandler.h"

//设置微信AppId、appSecret、分享url

[UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];在微信登录按钮中实现以下方法:

UMSocialSnsPlatform *snsPlatform=[UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];

snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){

if (response.responseCode==UMSResponseCodeSuccess) {

UMSocialAccountEntity *snsAccount=[[UMSocialAccountManager SocialAccountDictionary]valueForKey:UMShareToWechatSession];

NSLog(@"用户名是%@,uid是%@,令牌是%@ url是%@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);

}

用户评论

殃樾晨

想学iOS开发,感觉太难了!

    有13位网友表示赞同!

你是梦遥不可及

现在iOS开发竞争很大吧?

    有10位网友表示赞同!

太易動情也是罪名

自己也想做iOS开发,不过还没下手呢。

    有14位网友表示赞同!

苏莫晨

最近想尝试用Swift编写App,听说比较容易上手。

    有6位网友表示赞同!

满心狼藉

苹果的新系统什么时候发布啊?有没有iOS开发的更新?

    有16位网友表示赞同!

罪歌

有什么好的iOS开发学习资源推荐吗?

    有8位网友表示赞同!

疯人疯语疯人愿

做iOS开发需要什么硬件配置?

    有7位网友表示赞同!

未来未必来

刚开始接触iOS开发,好多东西都不太明白。

    有10位网友表示赞同!

陌然淺笑

苹果App Store上的优秀游戏APP都是怎么做出来的?

    有8位网友表示赞同!

羁绊你

有没有正在学习iOS开发的同学可以互相讨论一下

    有5位网友表示赞同!

来自火星球的我

听说iOS开发比安卓开发更容易赚钱是真的吗?

    有12位网友表示赞同!

呆萌

我的第一款iOS APP已经上架了,感觉超级兴奋!

    有13位网友表示赞同!

蔚蓝的天空〃没有我的翅膀

做iOS开发需要什么技能?除了编程之外还有哪些?

    有5位网友表示赞同!

墨染年华

想找工作做iOS开发的可以去哪里看看?

    有8位网友表示赞同!

烟雨离殇

学习iOS开发需要多久时间才能入门呢?

    有7位网友表示赞同!

仰望幸福

哪个iOS开发框架更受欢迎啊?

    有7位网友表示赞同!

代价是折磨╳

iOS开发的前景怎么样啊,未来会发展吗?

    有9位网友表示赞同!

╯念抹浅笑

有没有哪个iOS开发社区可以加入的?

    有16位网友表示赞同!

没过试用期的爱~

做iOS开发有什么乐趣吗?

    有16位网友表示赞同!

七夏i

希望以后自己也能做出像抖音这样的App!

    有16位网友表示赞同!

【深入解析:iOS应用开发最佳实践与技巧】相关文章:

1.动物故事精选:寓教于乐的儿童故事宝库

2.《寓教于乐:精选动物故事助力儿童成长》

3.探索动物旅行的奇幻冒险:专为儿童打造的童话故事

4.《趣味动物刷牙小故事》

5.探索坚韧之旅:小蜗牛的勇敢冒险

6.传统风味烤小猪,美食探索之旅

7.探索奇幻故事:大熊的精彩篇章

8.狮子与猫咪的奇妙邂逅:一场跨界的友谊故事

9.揭秘情感的力量:如何影响我们的生活与决策

10.跨越两岸:探索彼此的独特世界