app常用

iOS_视频后台播放+远程控制 1、Plist加入 对于长时间运行的任务,需要在Info.plist添加一行,键为UIBackgroundModes,值为一个数组,可以包含如下几个字符串: audiolocationvoipnewsstand-contentexternal-accessorybluetooth-central 第2 阅读详情

一、App Design Basics
二、Core App Objects

 
1)UIApplication对象:管理应用事件loop和协调行为。你在appDelegate中可以用到它,或者通过[UIApplication sharedAppliation]得到。
2)App Delegate 对象: 在创建应用时候创建的自定义对象,一般通过UIApplicationMain函数创建。这个对象的主要任务是处理应用状态的改变。
3)Document和data模型对象: document对象是UIDocument的子类来管理数据模型对象(相当于数据库吧)。Document对象不是必须的,但是提供了一种便利的方法,让你在一个单独的文件或文件包中管理数据。(本人用的数据库较多,对UIDocument研究甚少)
4)View Controller对象:
5)UIWindow对象:
6)视图、control和layer对象:

1、数据模型:
NSString、NSAttributedString
NSNumber、NSDecimalNumber、NSIndexPath
NSData、NSValue
NSDate、NSDateComponents
NSURL
NSArray、NSDictionary、NSIndexSet、NSOrderedSet、NSSet

NSInteger/NSUInteger
NSRange
NSTimeInterval
CGPoint
CGSize
CGRect

2、用户界面
3、App Bundle包括:
1)App执行文件
2)Info.plist
3)App Icons: icon.png、icon@2x.png、icon-small.png、icon-small@2x.png
4)Launch images:Default.png、Default-portrait.png、Default-Landscape.png
5)storyboard files(或者nib files): Mainboard.storyboard(通过NSMainStoryboardFile指定)或mainWindow.xib(通过NSMainNibFile指定)
6)Ad hoc distribution icon:文件名必须为iTunesArtwork,且不能包含扩展名: 512*512pixel,对于ad hoc发布来说是必须的,但是对于其他来说是可选的
7)Setting Bundle:Settings.bundle:如果你想在Settings App中设置你的应用的自定义设置,你必须提供一个setting bundle。
8)非本地化的资源文件:
9)本地化资源:例如en.lproj、fr.lproj

使用[NSBundle mainBundle]获得bundle资源,使用pathForResource:ofType:查找资源路径

三、App状态和多任务
对于iOS应用来说,知道应用运行于前台还是后台是至关重要的。因为资源和性能。
在你实现你的应用时,遵循下面的指导:
1)(必须) 正确响应状态变化。
2)(必须)当进入到后台,确保你的应用正确地调整了行为。
3)(推荐)注册系统通知来响应状态变化。
4)(可选)如果你的应用需要在后台做一些实际的工作,请求系统合适的权限来继续运行。

1、管理状态变化:
1)Not Running
2)Inactive:在前台,但是不接收事件。一个应用一般只会在状态发生改变时才会经过这个状态。
3)Active:
4)Background:在后台并执行代码中。一般只会在应用转到Suspended状态过程中经过这个状态。然而,应用可以请求额外的执行时间,这可能会让应用在这个状态保留一段时间。另外,一个正在加载的应用直接进入到这个状态而不是Inactive状态。
5)Suspended:在后台并且不执行代码。

 
2、应用加载周期:

 
要确定你的应用在前台还是后台,可以请求[UIApplication sharedApplication]的applicationState属性。当你的应用被加载到前台时,其状态是UIApplicationStateInactive(中间状态),当你的应用被加载到后台时,属性为UIApplicationStateBackground。你可以使用这个差别来调整加载时的行为----在application:didFinishLaunchingWithOptions:方法中。

3、进入到后台:
你的代理applicationDidEnterBackground:有5秒的事件来结束任务并返回。实际上,这个方法应该尽快的返回。如果在规定时间内没有返回,你的应用会被kill掉并清除出内存。如果你需要更多的时间来执行任务,调用 beginBackgroundTaskWithExpirationHandler:方法来请求后台执行时间,并在另一个线程中执行长时间的耗时任务。
4、在Wakeup时处理Queued Notifications:
在Suspended状态的应用必须准备好处理任何queued通知---当其返回到前台或后台执行状态。Suspended状态的app不执行任何代码,因此不能处理通知,包括设备方向更改、Preferences更改,和其他可能影响应用界面或状态的通知。为了确保这些更改不丢失,系统queue了尽可能多的这些通知,并在应用返回前台时通知应用。
你可以注册很多通知,包括:
1)配件连接了或断开了:EAAccessoryDidConnectNotification、EAAccessoryDidDisconnectNotification
2)设备方向更改: UIDeviceOrientationDidChangeNotification
3)显著的时间更改:UIApplicationSignificantTimeChangeNotification
4)电池电量状态更改:UIDeviceBatteryLevelDidChangeNotification、UIDeviceBatteryStateDidChangeNotification
5)The proximity state changes:UIDeviceProximityStatDidChangeNotification
6)受保护的文件状态更改:UIApplicationProtectedDataWillBecomeUnavailable、UIApplicationProtectedDataDidBecomeAvailable
7)外部显示器连接或断开:UIScreenDidConnectNotification、UIScreenDidDisconnectNotification
8)屏幕显示模式更改:UIScreenModeDidChangeNotification
9)Preference更改:NSUserDefaultsDidChangeNotification
10)当前语言更改:NSCurrentLocaleDidChangeNotification

5、在应用进入到Suspended状态后,如果下面的某一项为真,那么程序会退出:
1)应用linked against iOS 4.0以前。
2)应用发布到iOS4.0以前的设备上。
3)当前设备不支持多任务(multitasking)
4)应用在info.plist中包括键UIApplicationExitsOnSuspend。

6、Main Run Loop:
7、后台执行和Multitasking:
8、确定Mulititasking是否可用:
UIDevice* device = [UIDevice currentDevice];
BOOL backgroundSupported = NO;
if ([device respondsToSelector:@selector(isMultitaskingSupported)])
   backgroundSupported = device.multitaskingSupported;

9、在后台执行一个有限长度的任务(Finite-Length Task):
beginBackgroundTaskWithExpirationHandler: ,还必须相应地调用endBackgroundTask:方法来标识任务结束(好吧,不调用endBackgroundTask:也可以,只需要调用beginBackgroundTaskWithExpirationHandler就可以让系统给你10分钟免费的后台时间)。(系统给额外的10分钟让你执行任务!!!)
例子:
- (void)applicationDidEnterBackground:(UIApplication *)application
{
    bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
        // Clean up any unfinished task business by marking where you.
        // stopped or ending the task outright.
        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];
 
    // Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
 
        // Do the work associated with the task, preferably in chunks.
 
        [application endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}

10、安排本地通知
11、实现长时间的耗时后台任务:
对于需要更多执行时间的任务来说,你必须请求特定的权限来在后台执行他们。在IOS中,只有特定的应用类型才允许在后台运行:
1)应用播放音频内容
2)应用实时保持通知他们的位置,例如导航应用。
3)应用支持Voice over Internet Protocol (VoIP)
4) Newsstand apps that need to download and process new content
5) Apps that receive regular updates from external accessories

12、声明你的应用支持的后台任务:
使用info.plist文件。添加UIBackgroundModes键并设置其值为一个数组,包含一个或多个字符串:
1)audio
2) location
3) voip

4) newsstand-content
5) external-accessory
6) bluetooth-central

13、跟踪用户的位置
有几种办法跟踪用户位置,大多数不需要你的应用在后台持续运行:
1)(推荐)显著的位置更改服务
2)只在前台运行的位置服务
3)后台位置服务
在你不需要高精度定位时,第一个方法是极力被推荐的。在第一个方法中,如果应用被挂起了,然后更新发生了,系统会唤醒其到后台状态并处理更新。如果应用开启了服务然后被结束掉了,系统会自动重新启动应用。
第二个方法和第三个方法都是用标准的Location Core Service来获取位置数据。唯一的区别是只在前台运行的位置服务在应用挂起时会停止投递更新,一般发生于应用不支持其他后台服务或任务。
通过前面介绍的UIBackgroundModes键指定location,就可以让应用在后台接收更新。注意这个键并不阻止系统挂起应用,但是它确实告诉系统它应该被唤醒。但是这个比较费电。

14、在后台播放音乐
15、实现一个VoIP应用:
1)UIBackgroundModes键指定数组中包含voip字符串。
2)配置app为voip而使用的socket
3)在进入到后台时,调用setKeepAliveTimeout:handler:
4)配置audio session来处理实际使用的转换。
5)为了确保一个好的用户体验,使用Core Telephony框架,在有电话时调整应用的行为
6)为了确保一个好的性能,使用SystemConfiguration框架来检测网络状态的变化,并且允许应用尽可能地睡眠。

配置了UIBackgroundModes为voip之后,不用再指定audio 也可以在后台播放音乐。
指定了voip之后的应用也会在系统启动后立即加载到后台

配置socket:
对于NSInputStream和NSOutputStream:使用setProperty:forKey:方法来添加NSStreamNetworkServiceType属性为NSStreamNetworkServiceTypeVoIP。
对于NSURLRequest:使用NSMutableURLRequest类实例的setNetworkServiceType:方法,参数为NSURLNetworkServiceTypeVoIP
对于CFReadStreamRef和CFWriteStreamRef:使用CFReadStreamSetProperty或 CFWriteStreamSetProperty函数来添加kCFStreamNetworkServiceType属性,这个属性的值应该是kCFStreamNetworkServiceTypeVoIP。

因为VoIP应用需要保持运行,以便接收来电,如果他以一个非0值退出,系统会自动将其重新载入。

使用[UIApplication sharedApplication] setKeepAliveTimeout:handler:来为应用添加一个Keep-Alive Handler,一般在applicationDidEnterBackground:方法中添加它。一般安装了Handler,系统会在timeout之前至少调用一次handler,handler有10s的运行时间,否则系统会挂起应用。
指定timeout的时候,一般指定为实际允许的最大值,虽然系统承诺在timeout之前调用你的handler块,但他不保证精确的调用时间。为了提高电池寿命,系统一般把你的handler块执行代码和其他周期性的系统任务放到一个组里,然后一次性处理所有的任务。因此,您的Handler代码必须准备好运行早于实际的你指定的Timeout。(也就是如果你需要10s的timeout值,那么你就指定5s就OK了)


五、App相关的资源
1、App Store必须的资源:
1) Info.plist文件。
2) Info.plist文件必须包含 UIRequiredDeviceCapabilities键。App商店使用这个键来确定一个用户是否可以在设备上运行你的应用。
3)你的应用必须包含一个或多个icons。
4)你的应用必须包含一个default.png。

2、Info.plist文件
1)UIRequiredDeviceCapabilities 键
2)CFbundleIcons:
3) UISupportedInterfaceOrientations

4)UIBackgroundModes:
5)UIFileSharingEnabled:
6) UIRequiresPersistentWifi
7)UINewsstandApp:

3、声明UIRequiredDeviceCapabilities :
这个键对应一个字典的数组
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/App-RelatedResources/App-RelatedResources.html

六、高级App 技巧:
1、创建一个Universal应用:
1)更新Info.plist设置:
key_root-<platform>~<device>
device有
    iphone—The key applies to iPhone devices.
    ipod—The key applies to iPod touch devices.
    ipad—The key applies to iPad devices.
例如:
UIInterfaceOrientation~ipad

2)实现你的试图控制器和视图:
3)为新的Symbols添加Runtime检查:
4)使用Runtime检查来创建条件的代码路径:
5)更新你的Resource文件:

2、保留应用用户界面的状态:
3、在Landscape模式下加载应用:
4、在第一次加载时安装应用特定的数据文件
5、保护数据使用On-Disk加密
6、开发VoIP App的技巧:
7、使用Reachability界面来改善用户体验:
Reachability interface允许应用在网络状态更改时得到通知。例如,一个VoIP应用可以在网络变得不可用时关闭网络链接并且在其变得可用时恢复网络链接。
要使用Reachability interface,你必须使用该框架注册一个回调函数并使用它来追踪网络变化。要注册一个回调函数:
1)为你的目标远程主机创建一个SCNetworkReachabilityRef结构。
2)指定一个回调函数到你的结构(使用 SCNetworkReachabilitySetCallback函数)来处理可达状态的变化。
3)添加那个目标到你的应用的一个active run loop(例如Main Run Loop),使用 SCNetworkReachabilityScheduleWithRunLoop函数。
这也提升了电池的寿命。

8、与其他应用交互:
支持自定义URL scheme的应用可以使用这些schemes来接收消息。一些应用使用URL Scheme来初始化特定的请求。例如,一个应用想在地图应用中显示一个地址,可以使用一个URL来加载那个应用并显示地址。你可以在你的应用中实现你自己的URL Scheme来促进类似的通信类型。
Apple提供了一些内建的URL Scheme支持,如http,mailto,tel和sms URL Schemes。它还支持针对地图的基于http的URL、YouTube和iPod Apps。这些Schemes的handler被固定并且不能更改。如果你的URL type包含apple提供的url scheme,Apple提供的应用会加载而不是你的应用。
注意:如果不只一个第三方app注册了相同的URL scheme,当前没有办法来决定哪个app会收到scheme。
要与一个使用自定义URL的app通信,要使用正确的格式内容创建一个NSURL对象,并传递这个对象给shared UIApplication的openURL:方法,来加载注册接收该URL类型的应用。那时,控制也交给了新的app。
下面的代码片段例示了一个应用如何请求另一个应用的服务。(例子中的"todolist"是另一个app的一个假设的自定义的url scheme):
NSURL *myURL=[NSURL URLWithString:@"todolist://www.acme.com?Quartery%20Report#200806231300"];
[[UIApplication sharedApplication] openURL:myURL];
如果你的应用定义了一个自定义的URL Scheme,你需要实现一个handler来处理scheme。

9、实现自定义的URL Schemes:
1)注册自定义的URL Schemes:在Info.plist文件中指定CFBundleURLTypes键。它是一个字典的数组,每个字典定义了一个URL scheme。
CFBundleURLTypes(在info.plist中为URL types)属性包含的字典的键和值
键 CFBundleURLName(在info.plist中为URL identifier)   为:一个包含URL scheme抽象名字的字符串。为了确保唯一性,推荐你指定一个反向DNS风格的标识符,例如:com.acme.myscheme。
键 CFBundleURLSchemes(在Info.plist中为URL scheles)  为:一组字符串,包含URL schemes的名字,例如:http、mailto、tel和sms等

 
上面图中的例子就是该应用支持 todolist://com.acme.ToDoList 格式的URL。

2)处理URL Requests:
所有的URLs被传递给你的应用Delegate,或者在加载时,或者你的应用已经运行或在后台时。要处理传进的URLs,你的应用代理应该实现下面的方法:
a)使用application:didFinishLaunchingWithOptions:方法来检索关于URL的信息并决定如何打开它。这个方法只在你的应用被加载时调用。
b)在iOS 4.2以后,使用application:openURL:sourceApplication:annotation:方法来打开文件。
c)在iOS 4.1以前,使用application:handleOpenURL:方法来打开文件。

如果URL请求到来时,你的应用没有运行,它被加载并移动到前台来使其能够打开URL。你的application:didFinishLaunchingWithOptions:实现方法应该从options字典中检索URL并决定应用是否能够打开它。如果可以打开,返回YES并使你的application:openURL:sourceApplication:annotation:(或application:handleOpenURL:)方法来处理实际的打开URL的操作。
下图显示了如果应用打开一个URL时 修改后的加载顺序:

 
注意:支持自定义URL scheme的应用可以指定不同的Launch图像,在加载时处理URL时显示。

例子:
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
  if ([[url scheme] isEqualToString:@"todolist"]){
   ToDoItem *item=[[ToDoItem alloc]init];
   NSString *taskName=[url query];
   if (!taskName || ![self isValidTaskString:taskName]){  //必须要有一个TaskName
       [item release];
       return NO;
   }
   taskName=[taskName stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

   item.toDoTask=taskName;
   NSString *dateString=[url fragment];
   if (!dateString || [dateString isEqualToString:@"today"]){
     item.dateDue=[NSDate date];
   } else {
     if (![self isValildDateString:dateString]){
       [item release];
       return NO;
    }
           NSString *curStr = [dateString substringWithRange:NSMakeRange(0, 4)];
            NSInteger yeardigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(4, 2)];
            NSInteger monthdigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(6, 2)];
            NSInteger daydigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(8, 2)];
            NSInteger hourdigit = [curStr integerValue];
            curStr = [dateString substringWithRange:NSMakeRange(10, 2)];
            NSInteger minutedigit = [curStr integerValue];
 
            NSDateComponents *dateComps = [[NSDateComponents alloc] init];
            [dateComps setYear:yeardigit];
            [dateComps setMonth:monthdigit];
            [dateComps setDay:daydigit];
            [dateComps setHour:hourdigit];
            [dateComps setMinute:minutedigit];
            NSCalendar *calendar = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
            NSDate *itemDate = [calendar dateFromComponents:dateComps];
            if (!itemDate) {
                [dateComps release];
                [item release];
                return NO;
            }
            item.dateDue = itemDate;
            [dateComps release];
        }
 
        [(NSMutableArray *)self.list addObject:item];
        [item release];
        return YES;
    }
    return NO;
}

10、显示和隐藏键盘
在UIKit中,只有支持文本输入的视图才能成为第一响应者。其它视图如果想可以成为第一响应者并显示键盘,那么它必须重载canBecomeFirstResponder方法并返回YES。
当一个视图变成第一响应者时,会默认显示键盘,但是你可以为支持自定义输入的视图替换键盘。每个responder都有一个inputView属性,它包含响应者成为第一响应者时显示的view。当这个属性为nil时,系统显示标准键盘。如果这个属性不为nil,系统显示你提供的视图。

一般,用户的轻击命令哪个视图变成第一响应者,但是你可以强制一个视图变成第一响应者。使用becomeFirstResponder方法。

11、取消屏幕锁定
设置shared Application的idleTimerDisabled属性为YES,让屏幕不锁定。为NO,则不阻止屏幕锁定。

七、提升性能:
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/PerformanceTuning/PerformanceTuning.html

八、iOS环境
1、特定的系统行为:
1)虚拟的内存系统
2)自动的睡眠Timer
3)多任务支持

2、安全
1)App Sandbox
2)Keychain Data

掌握Xcode后台处理的艺术:iOS应用的隐形力量 iOS应用的后台处理能力可以让用户在不打开应用的情况下,仍能享受到服务,如接收消息、下载内容等。通过本文的详细介绍和代码示例,读者应该能够掌握Xcode中进行应用后台处理的方法和技巧。无论是处理后台任务、下载数据、播放音频,还是更新位置信息,Xcode都提供了相应的工具和API来支持这些功能。后台处理能力是iOS应用开发中的重要组成部分,它能够显著提升应用的用户体验和功能性。随着移动设备的不断进步,后台处理技术也将继续发展和完善。让我们继续探索和利用Xcode的强大功能,打造更加智能和强大的iOS应用。 阅读详情

相关推荐

uni-app常用模板

【代码】uni-app常用模板。

LYBWWP 2445

iOS 后台任务总结

并且,即使你的 APP 已经挂掉啦,下载任务还是会继续,等到下载完成啦,系统会唤起你的 APP 进程,并通知你,但如果是用户主动杀掉的你的进程,那么系统会自动取消下载任务。,你需要在这个回调里检查是否有新内容可用,如果有,就开启后台下载,推荐使用 NSURLSession 来建立,下载完成后,你必须调用这个方法出入 的 completionHandler 并传入一个 整型值 来表示 你的处理是否正常,UI是否已经更新,让系统来决定更新 snapshot等;但我看介绍,跟前面讲解的 后台下载文件没啥区别啊!

旭日的博客 3919

iOS后台任务处理:Background Modes详解

在iOS系统中,应用程序在后台运行的情况比较复杂。我们的目的就是要详细了解iOS后台任务处理中的Background Modes,弄清楚它的各种模式、如何使用以及应用场景等。范围涵盖了从基础概念到实际项目应用,再到未来发展的各个方面。本文首先会介绍一些相关术语,接着引入核心概念,解释它们的含义和相互关系,给出原理和架构的示意图。然后会讲解核心算法原理和具体操作步骤,通过数学模型和公式进一步说明。再通过项目实战展示代码案例并详细解读。之后分析实际应用场景,推荐相关工具和资源,探讨未来发展趋势与挑战。

移动开发前沿的博客 859

后台 运行 background run

文一 我从苹果文档中得知,一般的应用在进入后台的时候可以获取一定时间来运行相关任务,也就是说可以在后台运行一小段时间。 还有三种类型的可以运行在后以, 1.音乐 2.location 3.voip 文二 在IOS后台执行是本文要介绍的内容,大多数应用程序进入后台状态不久后转入暂停状态。在这种状态下,应用程序不执行任何代码,并有可能在任意时候从内存中删除。应用程序提供特定的

ssihc0的专栏 4870

【Android 教程系列第 12 篇】常用 App 的 URL Scheme

常用 App 的 URL Scheme

“Allen Su”的博客 7104

comsol移动网格_comsol模拟移动的纳秒脉冲激光烧蚀材料,温度场分布,结果总不理想,求助大佬!!...

本人comsol新手一枚,希望大家多多指点研究课题:纳秒脉冲激光刻蚀材料表面想用comsol模拟刻蚀过程中的温度场分布,脉宽为300ns,重复频率100kHz,光斑移动速度为5000mm/s,光斑直径50um,激光功率10W,材料种类为:有机涂层,属性如下目前,采用的是一个移动的高斯面光源x脉冲函数,脉冲函数我用的是一个周期性方波:周期性拓展后,画出来的脉冲图,不知道为什么在0~1s的区间内只有1...

weixin_33288893的博客 4745

常用唤醒APP的方式

参考常用唤醒APP的方式

sinat_36065456的博客 740

巨量千川M-API实战:5分钟搞定短视频计划数据自动获取(Python版)

本文详细介绍了如何利用巨量千川M-API和Python快速搭建自动化工具,实现短视频计划数据的自动获取。通过实战代码演示了从环境准备、Token管理到核心数据接口调用的完整流程,帮助电商运营和技术开发者告别手动导出,高效完成数据汇总与分析。

weixin_29325515的博客 1365

常用App URL Scheme

常用app App Store scheme: 'itms-apps://' 支付宝 packageName: 'com.eg.android.AlipayGphone', scheme: 'alipay://' 淘宝 packageName: 'com.taobao.taobao', scheme: 'taobao://' QQ packageName: 'com.tencent.mobileqq', scheme: 'mqq://' 微信 packageName: 'com.ten

编码揭秘的专栏 3376

10xGenomics官方可视化工具——Loupe Browser

Loupe Browser是⼀款10xGenomics开发的交互式桌⾯应⽤程序,⽤于探索10x单细胞数据,可以用来找出感兴趣的细胞、找出显著差异表达的基因、鉴定细胞类型、探索细胞亚类和数据共享。

weixin_47195452的博客 3361

PCL 贪婪投影三角剖分算法【2025最新版】

本博客在学习PCL中的贪婪投影三角算法的基础上,实现了使用彩色点云重建彩色模型的应用案例。博客长期更新,最近一次更新时间为:2025年7月6日。

点云侠的博客 37万+

APP设计:(一)app界面常用设计规范

app设计是一个看似简单其实复杂的事情,每一个部件的设计都有一定的规范和设计思路可寻。 app设计,也就是我们常说的手机应用程序的界面设计。 如今手机已成为我们生活工作密不可分的一个工具,各行业各类型的app层出不穷。 经过几年的发展逐渐成熟,也逐渐形成一些普适的设计规范,包括布局、各部件尺寸、字体运用等等。虽然说设计要创新,不能一成不变,但考虑到用户的使用习惯,提高用户体验感,在一些趋于统...

ww0908的博客 5万+

实现敌人跟随玩家。(Unity)

首先和玩家设置一模一样,给敌人添加一个刚体,设置一个碰撞器,并设置一个触发器。然后在对场景里面的组件添加导航网格代理并且进行bake烘焙,那样的话敌人就可以在进行烘焙的位置进行移动。创建脚本,并且挂载脚本到敌人的组件上,用代码进行实现效果,并且要挂载目标对象。

weixin_57813136的博客 1869

常用APP的OpenUrl

openURL方法: UIApplication *app = [UIApplication sharedApplication]; // 打电话 [app openURL:[NSURL URLWithString:@"tel://10086"]]; //发短信 [app openURL:[NSURL URLWithString:@"sms://10086"]]; //发邮件 [app openURL:[NSURL URLWithString:@"mailto://12345@qq.com"]];

shgh_2004的专栏 5394

RFC 字符码转换深度解析:Unicode、非 Unicode 与 MDMP 系统的协奏

老版本 MDMP 系统不上传自定义映射时,Unicode 端会落回“预配置列表”。列表里可见西欧 1100、日文 8000、中文 8400 等经典编号。若需强制覆写映射,可在 SM59 ➡Unicode页签启用,或直接勾选作为兜底。字符编码问题常“潜伏”多年,一旦旧系统升级或新增语种便集中爆发。掌握 RFC code page 转换机理、灵活运用 SM59 选项、在早期对 LANG 字段和字段长度进行治理,是根治乱码与 short dump 的关键。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

华为OD机考双机位C卷 - 斗地主之顺子 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 斗地主之顺子(OD上机考试双机位C卷)。提供在线OJ刷题。Java、C++、Python、GO语言、C语言、JavaScript题解,并提供完整思路讲解。

算法大师! 9695

APP 测试中十大常用 adb 命令

大家好啊,我是大田。 今天分享做 APP 测试中常用的命令,也是面试高频问题。 1、查看帮助手册 adb --help 2、检测连接到电脑中的安卓设备 adbdevices 3、通过wifi进行远程连接手机 adbconnectip:端口号/adb disconnectip:端口号 手机与电脑需要连接同一个路由器。 4、进入安卓手机后台( 是一个 Linux 系统 ) adb shell 5、从手机中拉取信息放到本地...

大田的博客 2012

【动态导通电阻】GaN HEMT动态导通电阻的精确测量

2023年7月,瑞士洛桑联邦理工学院的Hongkeng Zhu和Elison Matioli在《IEEE Transactions on Power Electronics》期刊发表文章,提出了一种稳态测量方法,用于研究氮化镓(GaN)高电子迁移率晶体管(HEMT)的动态导通电阻(Ron)。实验结果显示,商业GaN器件在稳态下的动态Ron变化显著,稳定时间可达数分钟且与电压相关。传统的脉冲测量方法由于测试时间不足,可能导致结果不准确。该

荷塘阅色 1379

App 常用的支付方式。

App 常用的支付方式。

新博客地址:blog.songchunmin.com 1056

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

常用APP的开发语言

主流APP主要开发语言的归纳:微信:QQ:淘宝:京东:支付宝:滴滴出行:美团:抖音:小红书:百度地图:今日头条:

weixin_67257142的博客 4267

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

App常用接口

应用程序的主要接口和应用场景介绍

马拉松PB 765

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

APP开发常用到的工具

开发中常用的工具有哪些,这是每一个企业都很关心的一个问题。好的工具能帮助企业快速的开发好一个APP,在速度和成本上都能得到提高。那么好用的APP开发工具都有哪些呢?今天就为大家推荐几款比较好用APP开发工具。 盘点APP开发常用到的工具有哪些 安卓和苹果是开发APP最常用的到的两个平台,技术人员们研究出了很多性能高、操作简单、实用性强的APP开发工具。很互联网公司借助这些工具开发出各种类型的手...

weixin_30387339的博客 387

常用的app

出门在外,最常用的就是下面几个app了,首先是导航软件,感觉高德地图使用起来的体验感还是很不错的,根据自己的出行方式在地图上选择出发点与目的地,app会自动筛选出距离较近的出行方式还是挺方便的,有的时候去到自己不认识的地方,使用app的时候(输入起始点与终点)根据app上的箭头与目的地的指向就可以知道自己去的方向是否正确了,这个去到陌生的地方还是挺有用的,在高德地图上可以预定酒店,订的酒店的距离与目的地距离还是比较近的,而且当到达一个陌生的地方之后比如坐公交可以切换当地公交的乘车票,也非常方便。 顺风车:

二哈 417

Android 天气APP(三十二)快捷切换常用城市

在2021年正式到来之前再更新几篇天气APP的文章,说实话现在对于这个APP的更新速度是比较缓慢的,一方面我有工作在进行,同时在写其他的文章,其次我正在使用Kotlin语言重写天气APP,还有一个原因就是功能的迭代问题,因为作为天气APP该满足用户的其实都已经满足了,我本来还有好多的想法打算加进去,又怕这个变得不伦不类,因此有些东西就搁置了,而这篇文章就是在对于用户的体验上做提升,嗯,来看看吧。这里先查询数据,然后判断数据,之后渲染数据,最后是点击item之后搜索城市,然后查找天气数据。

2501_90472536的博客 350

常用的开发App的编程软件

论语·卫灵公》中说“工欲善其事,必先利其器”。同样,开发App选对开发环境和编程软件,将事半功倍!

mali_ml的博客 9217

看看我们常用的APP可以用什么来实现?(2)

我们的手机上有很多APP,其中每个手机都有必备的几个APP,比如王者荣耀(划掉),比如天气,地图,还有一些应用的功能也很常见,比如,微锁屏的一些安全验证等等,那么今天就来看看他们都可能用到什么只是吧。语言:C# 文档:来自微软开发者中心一、墨迹天气(几乎所有天气应用,包括手机系统默认的) 每个天气软件都会有一个地点请求的功能,也就是实时定位,那么这个功能是怎么实现呢,下面,先看一个...

从基础开始,注意细节,不要骄傲 451
上一篇: TARGET_IPHONE_SIMULATOR简单使用
下一篇: ios播放声音和振动
hsf_study
博客等级 码龄11年 10粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值