.9 Màn hình tóm tắt và chi tiết của tin

Một phần của tài liệu Xây dựng ứng dụng đọc tin tức trường Đại học sư phạm - Đại học Đà Nẵng trên nền tảng IOS. (Trang 61)

Các tin đã đọc sẽ được dánh dấu màu xám.

Hình PL.1.10 Tin đã đọc sẽ được bơi xám

2.1.2. Chức năng “Tìm kiếm theo tiêu đề tin”

Để tìm kiếm nhanh 1, nhập tiêu đề muốn tìm vào ơ tìm kiếm chương trình sẽ tìm tin và hiển thị lại danh sách tin tìm được.

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 51

2.1.3. Các tuỳ chọn cho “Tin”

Chương trình cung cấp 4 bộ lọc cho tin tức: tất cả tin, tin đã đọc, tin chưa đọc, tin được đánh dấu, với mục đích giúp người đọc truy xuất nhanh đến những thuộc tính của tin một cách nhanh nhất.

Từ màn hình danh sách tin, chọn nút “Tuỳ chọn”.

Hình PL.1.12 Nút bấm vào chế độ lọc tin và danh mục các bộ lọc cho tin

Người dùng có thể lọc tin theo Tất cả, Chưa đọc hoặc Đã lưu (yêu thích).

2.2. Chức năng “Đăng ký chuyên mục”

Chức năng “Đăng ký chuyên mục” giúp người dùng đăng ký nhận thông báo khi có tin mới từ 1 số chuyên mục quan tâm, điều này giúp giảm dung lượng truy cập mạng. Người dùng có thể chọn, huỷ theo dõi bằng cách bấm vào chuyên mục tương ứng.

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 52

Hình PL.1.14 Màn hình khi có thơng báo mới, số tin mới tải về được hiển thị trên icon chương trình

Chương trình sẽ tự động tải tin mới và cập nhật số tin mới lên icon của chương trình.

2.3. Chức năng “Cài đặt”

Chức năng “Cài đặt” với chức năng tiết kiệm bộ nhớ máy khi cho phép người dùng giới hạn số tin tải về hoặc giới hạn số ngày trở lại của tin được tải về. Người dùng có thể cài đặt tối đa 150 tin và 30 ngày giới hạn.

Ví dụ: số tin giới hạn là 30 tin và 30 ngày giới hạn thì chương trình tối đa sẽ tải tối đa 30 tin trong vòng 1 tháng trở lại.

Hình PL.1.15 Giao diện cài đặt 3. Các sự cố thường gặp và cách khắc phục 3. Các sự cố thường gặp và cách khắc phục

3.1. Khơng nhận được thơng báo có tin mới

Thơng báo sẽ được gởi đến điện thoại mỗi khi có tin mới được cập nhật trên trang chủ, trong q trình gởi thơng báo có thể bị sự cố mạng làm cho tin không thể

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 53

tới máy của bạn ngay lập tức, các bạn vui lịng chờ hoặc có thể tự động cập nhật tin bằng tay.

3.2. Nhận được thơng báo có tin mới nhưng khơng có tin mới

Trong trường hợp này, người dùng hãy thử mở ứng dụng thơng qua thơng báo đẩy để chương trình hồn tất thủ tục chạy ngầm bên dưới .

3.3. Không xem được chi tiết tin

Trong trường hợp người dùng coi chi tiết tin nhưng ứng dụng chỉ xuất hiện màn hình trắng, xin vui lịng kiểm tra kết nối mạng và thử lại một vài lần.

3.4. Các lỗi khác

Trong quá trình sử dụng nếu phát hiện các lỗi ngoài những lỗi đã nêu ra ở trên, vui lòng liên hệ với đơn vị sở hữu ứng dụng để tiến hành khắc phục.

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 54

Phụ Lục B. Mã nguồn xử lý tệp XML - RSS Hàm xử lý khi bắt đầu 1 thẻ

- (void)parser:(NSXMLParser *)parser

didStartElement:(NSString*)elementName namespaceURI:(NSString

*)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;{

element = elementName;

if ([elementisEqualToString:@"item"]) {

item = [[NSMutableDictionary alloc] init]; title = [[NSMutableString alloc] init]; link = [[NSMutableString alloc] init];

description = [[NSMutableString alloc] init]; image = [[NSMutableString alloc] init];

pubDate = [[NSMutableString alloc] init]; idNews = [[NSMutableString alloc] init]; count++;

}

elseif([elementisEqualToString:@"channel"]){

GlobalClass *obj=[GlobalClass getInstance];

obj.numNews = 0; }

}

Hàm xử lý khi kết thúc 1 thẻ

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;{

GlobalClass *obj=[GlobalClassgetInstance];

if ([elementName isEqualToString:@"item"]) {

[item setObject:title forKey:@"title"]; [item setObject:link forKey:@"link"];

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 55

[item setObject:description forKey:@"description"]; [item setObject:image forKey:@"image"];

[item setObject:pubDate forKey:@"pubDate"]; [item setObject:idNews forKey:@"idNews"]; [feedsaddObject:[item copy]];

DBManager *db=[DBManager getInstance];

int category = (int)obj.category;

[title setString:[self replaceHTMLCharacter:title]];

[description setString:[self replaceHTMLCharacter:description]];

// Prepare the query string.

NSString *query = [NSString stringWithFormat:@"insert into `news`

values('%d', '%@', '%@', '%@', '%@','%d','%@', 0, 0)",idNews.intValue, title, description, link, image,category,pubDate ];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];

[dateFormat setDateFormat:@"YYYY-MM-dd HH:mm:ss.SSS"];

NSDate *date = [dateFormat dateFromString:pubDate]; double now = [[NSDatedate] timeIntervalSince1970]; double tmp = [date timeIntervalSince1970];

double descent = (now - tmp)/86400;

// Execute the query.

if(obj.numNews< obj.numberNewsLimit&& (int)descent <=

obj.dateLimit){

obj.numNews = obj.numNews + 1;

if([db executeQuery:query]){

NSString *key = [NSStringstring WithFormat:@"category%d",

category];

NSUserDefaults *userDefaults = [NSUserDefaults

standardUserDefaults];

NSMutableArray *tmp = [userDefaults objectForKey:key];

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 56 if(tmp == nil){ tmp1 = [[NSMutableArrayalloc] init]; [tmp1 addObject:[NSNumbernumberWithInt:[idNewsintValue]]]; }else{ tmp1 = [[NSMutableArrayalloc] initWithArray:tmp]; [tmp1 addObject:[NSNumbernumberWithInt:[idNewsintValue]]]; }

[userDefaults setObject:tmp1 forKey:key]; [userDefaults synchronize];

obj.numNewsDownloaded = [tmp1 count]; }

} }

elseif ([elementName isEqualToString:@"channel"]){

[[NSNotificationCenter defaultCenter]

postNotificationName:@"reloadData"object:self];

DBManager *db=[DBManagergetInstance];

NSString *query = [NSStringstringWithFormat:@"update `category` set

`numlastupdate` = %d WHERE id = %d",(int)obj.numNews,(int)obj.category ];

[db executeQuery:query];

NSDate *date = [NSDatedate];

NSDateFormatter *dateFormat = [[NSDateFormatteralloc]init];

[dateFormat setDateFormat:@" dd/MM/yyyy hh:mm:ss"]; [[NSUserDefaultsstandardUserDefaults] setObject:[dateFormat

stringFromDate:date] forKey:[NSStringstringWithFormat:@"lastupdate-

%d",(int)obj.category]];

} }

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 57

Hàm xử lý để lấy nội dung bên trong 1 thẻ

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string; { if ([elementisEqualToString:@"title"]) { [titleappendString:string]; } elseif ([elementisEqualToString:@"link"]) { [linkappendString:string]; }elseif ([elementisEqualToString:@"description"]){ [descriptionappendString:string]; }elseif ([elementisEqualToString:@"thumb"]){ [imageappendString:string]; }elseif ([elementisEqualToString:@"pubDate"]){ [pubDateappendString:string]; }elseif ([elementisEqualToString:@"id"]){ [idNewsappendString:string]; } }

Phan Hồng Minh - 11CNTT2 - 312023111131 Trang 58

Phụ Lục C. Mã nguồn đăng ký chuyên mục với Parse

-(void)application:(UIApplication *)application

didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{ [PFPushstoreDeviceToken:deviceToken];

NSString *query = [NSStringstringWithFormat:@"select `id`,`subcribe`

FROM `category`"];

DBManager *db =[DBManagergetInstance];

NSArray *arrtmp = [[NSArrayalloc] initWithArray:[db

loadDataFromDB:query]];

for (id i in arrtmp) {

NSString *str = [NSStringstringWithFormat:@"channel-%d",[[i

objectAtIndex:0] intValue]];

if([[i objectAtIndex:1] intValue] == 1){

[PFPushsubscribeToChannelInBackground:str ]; }else{ [PFPushunsubscribeFromChannelInBackground:str ]; } } }

Một phần của tài liệu Xây dựng ứng dụng đọc tin tức trường Đại học sư phạm - Đại học Đà Nẵng trên nền tảng IOS. (Trang 61)

Tải bản đầy đủ (PDF)

(69 trang)