要明确的是,Web应用程序正在缓存,并且在Mobile Safari中可以正常脱机工作.
问题是它被添加到iPhone 4s和iPad 2的主屏幕上,两者都运行iOS 6.0.1.它将无法脱机工作并且在连接到互联网时出现网络错误,即"无法打开MYWEBAPP.由于未连接到互联网,因此无法打开MYWEBAPP"
我已经调试了几个小时,似乎无法找到解决方案.我没有收到控制台中的任何错误,我正在运行Jonathan Stark的调试代码
我已经在桌面Safari,Chrome和Firefox的在线/离线开发者工具中测试了该应用.以及Safari中使用设备的Web Inspector.iPhone或iPad上的结果相同.它们将缓存Web应用程序并将在Mobile Safari中运行,但在添加到主屏幕时则不会.离线或在线都没有错误.
据我所知,我正在使用最佳实践:
添加了HTML标头: <html manifest="photo.appcache">
我还尝试使用清单文件的不同名称,包括:cache.manifest和offline.manifest,因为我读到它有所不同,但在我的测试中,只要扩展名是什么名称并不重要. manifest或.appcache,并在.htaccess文件中正确提供.
添加了正确的MIME类型: AddType text/cache-manifest appcache manifest
我也试过:AddType text/cache.manifest manifest,
AddType text/cache.manifest .manifest manifest,AddType text/cache-manifest .manifest
我不相信这有效:AddType text/cache.manifest 但我不记得了.在大多数情况下它没关系,我坚持:
AddType text/cache-manifest appcache清单
就像HTML5 Mobile Boilerplate中的内容一样.
添加:
网络:*
到appcache文件.我相信这允许下载所有内容以及使所有链接都能正常工作.
<meta name="apple-mobile-web-app-capable" content="yes">
因为我在这里阅读了解决了类似于我的问题,但我可以确认它在我的测试中不起作用.按主屏幕图标时删除此行或将内容设置为"否"将重定向到Mobile Safari而不是全屏打开.我已经把它缩小到它是iOS 6中的一个错误(我实际上使用的是iOS 6.0.1),因为我知道现在已经将数据分离为浏览器中的Web应用程序和添加到主屏幕的数据.我在这里发布这个问题,看看是否有其他开发人员遇到了同样的问题.
我正在尝试使用本教程作为参考在我的游戏中实现一个简单的评分系统:
http://www.raywenderlich.com/87232/make-game-like-mega-jump-sprite-kit-swift-part-2
问题是,如果我尝试按原样实现,它会在此行的GameScene.swift中崩溃:
let another = whichNode as! GameObjectNode
Run Code Online (Sandbox Code Playgroud)
以下是玩家收集硬币的代码的主要部分.如果你想更接近和更好看,我也可以邀请你到我的回购.我知道从我在这里粘贴的代码看起来很难.
GameObjectNode.swift:
enum CoinType: Int {
case Normal = 0
case Special
}
struct CollisionCategoryBitmask {
static let Player: UInt32 = 0x00
static let Coin: UInt32 = 0x01
static let Platform: UInt32 = 0x02
}
class GameObjectNode: SKNode {
func collisionWithPlayer(player: SKNode) -> Bool {
return false
}
func checkNodeRemoval(playerY: CGFloat) {
if playerY > self.position.y + 300.0 {
self.removeFromParent()
}
}
}
class CoinNode: GameObjectNode {
let coinSound = SKAction.playSoundFileNamed("StarPing.wav", …Run Code Online (Sandbox Code Playgroud) 我目前在我的iOS目标中使用Game Center,但没有在tvOS目标中工作.
我已经添加了Leaderboard图像并将标识符放在Xcode中:
这是我用来调出排行榜并启动播放器的课程.它叫做GameKitHelper.swift:
import UIKit
import Foundation
import GameKit
let PresentAuthenticationViewController = "PresentAuthenticationViewController"
class GameKitHelper: NSObject {
static let sharedInstance = GameKitHelper()
var authenticationViewController: UIViewController?
var gameCenterEnabled = false
func authenticateLocalPlayer() {
//1
let localPlayer = GKLocalPlayer()
localPlayer.authenticateHandler = {(viewController, error) in
if viewController != nil {
//2
self.authenticationViewController = viewController
NSNotificationCenter.defaultCenter().postNotificationName(PresentAuthenticationViewController, object: self)
}
else if error == nil {
//3
self.gameCenterEnabled = true
}
}
}
func reportAchievements(achievements: [GKAchievement], errorHandler: ((NSError?)->Void)? = nil) {
guard gameCenterEnabled else …Run Code Online (Sandbox Code Playgroud) 我正在研究别人的应用程序而且我收到了这个错误:
'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 0
beyond bounds for empty array'
Run Code Online (Sandbox Code Playgroud)
Xcode指向这一行:
NSDictionary *geo = [response[0] objectForKey:@"geometry"];
Run Code Online (Sandbox Code Playgroud)
这是完整的方法:
- (void)loadLatLong {
indx ++;
if (indx == [datalist count]) {
[self showMarker];
// self.alertView.hidden = true;
// [self setThreeQuarters];
[self.progressbar setProgress:1.0 animated:YES];
return;
}
PointClass *pt = datalist[indx];
NSString *stPt = [pt.Location stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *str = [stPt stringByReplacingOccurrencesOfString:@" " withString:@"+"];
NSString *url = [NSString stringWithFormat:@"https://maps.google.com/maps/api/geocode/json?address=%@&sensor=false&key=AIzaSyAoSBH8mBmeVp2HVx6vJrkTvl3bjRFiWag",str];
NSURL *urlString = [NSURL URLWithString:url];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer]; …Run Code Online (Sandbox Code Playgroud) 到目前为止,我仅针对错误消息正常工作。但是,我希望这也适用于成功消息。当按下联系表单中的提交按钮时,就会发生这种情况。单击页面右上角的联系人即可滚动到该联系人。
您可以在这里进行测试。
这是我用于错误消息的 jQuery:
$(document).ready(function() {
$(".error:first").attr("id","errors");
$("#errors").each(function (){
$("html,body").animate({scrollTop:$('#errors').offset().top-175}, 1000);
});
});
Run Code Online (Sandbox Code Playgroud)
有什么方法可以修改它以使用相同的 offset().top-175 滚动到 #success 和 #errors 吗?
提前致谢!
我试图在本教程的跳转游戏中创建一个静态HUD,它在整个游戏中保持在屏幕顶部.我还是Swift的新手,所以也许这是一个我不容易看到的惯例:
http://www.raywenderlich.com/87232/make-game-like-mega-jump-sprite-kit-swift-part-2
在教程中,他将HUD放在override init(size: CGSize)函数中:
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(size: CGSize) {
super.init(size: size)
...
// Build the HUD
// HUD
hudNode = SKNode()
hudNode.zPosition = 1000
addChild(hudNode)
// Coins
// 1
let coin = SKSpriteNode(imageNamed: "powerup05_1")
coin.position = CGPoint(x: 300, y: self.size.height-100)
coin.zPosition = 1000
hudNode.addChild(coin)
// 2
lblCoins = SKLabelNode(fontNamed: "ChalkboardSE-Bold")
lblCoins.fontSize = 70
lblCoins.fontColor = SKColor.whiteColor()
lblCoins.position = CGPoint(x: 375, y: self.size.height-100)
lblCoins.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
lblCoins.zPosition = 1000
// 3 …Run Code Online (Sandbox Code Playgroud) ios ×4
sprite-kit ×3
swift ×3
2d-games ×1
arrays ×1
forms ×1
game-center ×1
ios8 ×1
javascript ×1
jquery ×1
manifest ×1
objective-c ×1
scrollto ×1
tvos ×1