This is an automated email from the ASF dual-hosted git repository. moshen pushed a commit to branch record-last-url in repository https://gitbox.apache.org/repos/asf/incubator-weex.git
commit 6648d4401705aea4027cef01700867d414e59517 Author: qianyuan.wqy <qianyuan....@taobao.com> AuthorDate: Wed Sep 18 14:55:30 2019 +0800 [iOS] Add last page info. --- ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h | 6 ++++++ ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h index 9705761..16e1aa6 100644 --- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h +++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.h @@ -440,6 +440,12 @@ typedef enum : NSUInteger { */ - (void)setViewportWidth:(CGFloat)width; +/** + * @abstract Get information about the last rendered page. + Useful fot debugging and fixing online bugs. + */ ++ (NSDictionary*)lastPageInfo; + /** * Deprecated */ diff --git a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m index 8f4bf9e..1a09028 100644 --- a/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m +++ b/ios/sdk/WeexSDK/Sources/Model/WXSDKInstance.m @@ -60,6 +60,9 @@ NSString *const bundleResponseUrlOptionKey = @"bundleResponseUrl"; NSTimeInterval JSLibInitTime = 0; +static NSString* lastPageInfoLock = @""; +static NSDictionary* lastPageInfo = nil; + typedef enum : NSUInteger { WXLoadTypeNormal, WXLoadTypeBack, @@ -316,6 +319,11 @@ typedef enum : NSUInteger { return; } WXLogInfo(@"pageid: %@ renderWithURL: %@", _instanceId, url.absoluteString); + + @synchronized (lastPageInfoLock) { + lastPageInfo = @{@"pageId": [_instanceId copy], @"url": [url absoluteString] ?: @""}; + } + [WXCoreBridge install]; if (_useBackupJsThread) { [[WXSDKManager bridgeMgr] executeJSTaskQueue]; @@ -339,6 +347,10 @@ typedef enum : NSUInteger { _options = [options isKindOfClass:[NSDictionary class]] ? options : nil; _jsData = data; WXLogInfo(@"pageid: %@ renderView pageNmae: %@ options: %@", _instanceId, _pageName, options); + + @synchronized (lastPageInfoLock) { + lastPageInfo = @{@"pageId": [_instanceId copy], @"options": options ? [options description] : @""}; + } [WXCoreBridge install]; if (_useBackupJsThread) { @@ -1141,6 +1153,15 @@ typedef enum : NSUInteger { } } ++ (NSDictionary*)lastPageInfo +{ + NSDictionary* result; + @synchronized (lastPageInfoLock) { + result = [lastPageInfo copy]; + } + return result; +} + @end @implementation WXSDKInstance (Deprecated)