IBEACON 로컬 알림 관리와 관련된 모범 사례 조언
-
23-12-2019 - |
문제
나는 (~ 45) UIViewControllers의로드가있는 스토리 보드 앱이 있습니다. 백그라운드 또는 전경에서 비콘이 UILOCALNOTIFICATION을 트리거하고 사용자가 동의하는 경우, 비콘 트리거와 연관된 UIViewController에 "푸시 / Segue"를 원합니다. 충분히 간단합니다. 비콘에 따라 약 10 개의 다른 VC가 있습니다.
내가 가진 질문은 이것입니다. 사용자는 내 45 uiviewtrlers가 알림을 트리거 할 때 내 45 개의 UIViewCtrlers 중 하나에 앉아있을 수 있습니다. 그래서 내 UIViewControllers 중 하나가 아래와 비슷한 것을 가져야합니다 (선택기의 코드 블록과 함께). 통지 및 다른 ViewController 로의 통지 및 푸시 / 세그 슈.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(showFoodMenuViewNow)
name:@"showfoodmenu" object:nil];
.
이것은 문자 그대로 스틱을 흔들어 볼 수있는 것보다 더 많은 인터내셔널 푸시 / 세그 슈 연결을 통해 내 스토리 보드를 수수롭게합니다. 매우 지저분 해. 모든 시각적 스토리 보드 세그 웁을 제거하거나 어떻게 든 모든 뷰가 SEGUE를 제공하는 단일 '벡터 ViewController'를 소개하는 방법이 있습니다. 그런 다음 VC는 LocalNotification을 평가하고 연결된 VC로 눌러줍니다.
이 작업을 관리하기위한 권장 모범 사례는 무엇입니까?
나는 의미가 있기를 바랍니다.
업데이트 :
이제 경로를 전환하여 AppDelegate에서 직접 UINAvigationController에 액세스하려고합니다. 나는 다음 코드를 사용하여 그렇게하고, 내 NC가 nil이 아니지만보기가 푸시되지 않습니다 ...
이 코드는 원하는 ViewController를 누르지 않을 것인가?
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
nm_vcFoodMenu *fm = [sb instantiateViewControllerWithIdentifier:@"foodmenu"];
UINavigationController *nc = [sb instantiateViewControllerWithIdentifier:@"myNavController"];
if (nc == nil){
NSLog(@"nc is nil");
} else {
NSLog(@"nc is not nil so trying to push to foodmenu");
[nc pushViewController:(nm_vcFoodMenu *)fm animated:YES];
}
.
이것은 내 스토리 보드와 다양한 움직이는 부분을 묘사합니다. 이것이 당신이 나를 도울 수 있기를 바랍니다!
감사합니다.
해결책
나는 이것에 대한 좋은 해결책을 주장하지는 않지만 아래는 그것이 가치있는 것에 대해 내가하는 일입니다. 아무도 더 나은 해결책을 가지고 있는지 듣고 싶습니다.
-
스토리 보드의 설정없이 AppDelegate에서 iBeacon을 프로그래밍 방식으로 프로그래밍 방식으로 관리합니다.
-
두 개의 iBeacons 두 개의 전환이 서로가 너무 밀접하게 두 번 전환하지 않아도됩니다 (마지막 전환 이후의 최소한은 몇 초가 지나가야합니다. 그렇지 않으면 타이머로 전환을 지연 시키거나 억제합니다. 그것.)
-
네비게이션 컨트롤러에서 스택을 관리하는 것은 실제 고통입니다. 사용자가 사용자가 돌아갈 수 있기를 원한다는 사례에서만 내가
[navigationController pushViewController:newViewController animated:YES]
를 수행 할 수 있습니다. 그리고 어떤 경우에는ViewController
가있는 내[self.navigationController setNavigationBarHidden:YES animated:YES];
에서 뒤로 버튼을 억제하는 것을 억제합니다
틀림 없이이 모든 것은 정말로 지저분합니다. 그러나 iBeacon 기반 전환이 어떻게 일어날 수 있는지에 대한 역동적 인 특성을 감안할 때, 나는 그것이 미리 모든 조합을 설정하기가 어렵다고 생각합니다.
다른 팁
프로젝트에서는 iBeacon 대리자로 재생되는 전용 싱글 톤을 만들고, 상위 뷰 컨트롤러에 대한 알림 인터페이스를 제시하므로 모든 논리는 한 곳에서 포함되어 있으며 다른 뷰 컨트롤러에서 수정할 필요가 없습니다.